如果任何网站使用java代码不可用,如何抛出异常

时间:2011-05-12 13:56:39

标签: java

我正在使用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时出现异常,但它没有抛出任何异常,它正在正常执行。 请帮助我,如果网站不可用,如何捕获此异常。

4 个答案:

答案 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);
    }
}