我正在使用java。 我有一个url作为输入。我正在尝试使用java代码打开url。 我正在使用:
URL url=new URL("http://doctorwho.time-and-space.co.uk/index.php");
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
这里我已经传递了一个链接作为输入,但是这个网站不可用。我想扔一个 打开此URL时出现异常,但它没有抛出任何异常,它正在正常执行。 请帮助我,如果网站不可用,如何捕获此异常。
答案 0 :(得分:1)
实际上你的所有行都会抛出异常:
java.net.URL.openConnection() throws IOException
java.net.URLConnection.getInputStream() throws IOException
java.net.URLConnection.getInputStream() throws IOException
您应该逐个处理这些问题,如果遇到任何问题,您应该在自己的代码中处理错误。也许扔另一个异常,停止执行,你想要的任何东西。可能你在这个区块周围有一个很大的尝试捕获(异常e),你应该摆脱它。
答案 1 :(得分:1)
如果您想抛出异常而不在函数中处理它,请使用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();
//...
}
答案 2 :(得分:1)
您可以将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);
}
}
答案 3 :(得分:0)
这段代码确实引发了异常:IOException。
最好的办法可能是创建一个特定于此服务的Exception类,然后重新捕获。要让程序根据错误采取不同的操作(这可能只是显示一个漂亮的消息而不是一个丑陋的堆栈跟踪),您可以使用特定的异常扩展您的基本服务异常。
所以基础异常:
public class MyServiceException extends Exception {
private static final long serialVersionUID = 1L;
public MyServiceException(String s, Throwable throwable) {
super(s, throwable);
}
}
与“stuff”相关的所有问题引发的异常
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);
}
}