我正在使用java。 我有一个网址作为输入。我正在尝试使用java代码打开url。 我正在使用:
URL url=new URL("http://doctorwho.time-and-space.co.uk/index.php");
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
在这里我传递了一个链接作为输入,但该网站不可用。在这里我想扔一个打开此URL时出现异常,但它没有抛出任何异常,它正在正常执行。请帮助我,如果网站不可用,如何捕获此异常。
实际上,您的所有行都可能引发异常:
-
java.net.URL.openConnection() throws IOException
-
java.net.URLConnection.getInputStream() throws IOException
-
java.net.URLConnection.getInputStream() throws IOException
你应该一一处理这些,如果你遇到其中任何一个,你应该在自己的代码中处理错误。也许抛出另一个异常,停止执行,任何你想要的。可能你在这个块周围有一个很大的尝试(例外e),你应该摆脱它。
如果你想抛出一个异常,而不是在函数中处理它,请使用throws
,不要使用try-catch
:
public void foo() throws IOException
{
URL url=new URL("http://doctorwho.time-and-space.co.uk/index.php");
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
//...
}
您可以将 IOException 包装到您自己的中。
public void fireURL(String pathToFireParam) throws CustomException
{
try{
URL url=new URL(pathToFireParam);
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
} catch(IOException ioexc){
throw new CustomException("Unavailable: "+ioexc.getMessage(),ioexc);
}
}
这段代码确实抛出了一个异常:IOException。
最好的办法可能是创建一个特定于此服务的 Exception 类,然后重新捕获。要让程序根据错误采取不同的操作(这可能只是显示一个漂亮的消息,而不是一个拥抱的堆栈跟踪),你可以使用特定的异常来扩展你的基本服务异常。
所以基本例外:
public class MyServiceException extends Exception {
private static final long serialVersionUID = 1L;
public MyServiceException(String s, Throwable throwable) {
super(s, throwable);
}
}
针对与"东西"相关的所有问题引发的异常
public class MyServiceStufFailedException extends MyServiceException {
private static final long serialVersionUID = 1L;
public MyServiceStufFailedException(String s, Throwable throwable) {
super(s, throwable);
}
}
以及加载XML文件的代码:
private void doStufWithURL(String fileURL) throws MyServiceStufFailedException {
try {
URL url=new URL(fileURL);
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
// Use input Stream too...
} catch (IOException exception) {
//Don't forget to put an explanation and the cause to help while debugging.
throw new MyServiceStufFailedException("IO Error while reading " + fileURL, exception);
}
}