繁体   English   中英

Java处理错误和异常

[英]Java handle errors & exceptions

我有一个允许从互联网下载文件的类:

public String download(String URL) {

try {
 if(somethingbad) {
  // set an error?
  return false; 
 }
}
//...
catch (SocketException e) {
 e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
 e.printStackTrace();
}
catch (ClientProtocolException e) {
 e.printStackTrace();
}
catch(InterruptedIOException e) {
e.printStackTrace();
}
catch (IOException e) {
 e.printStackTrace();
}
}

现在,我要在另一个类中调用此函数,并且我想显示一条消息,该消息将帮助我弄清楚为什么它不起作用。

我该怎么做才能显示这样的东西?

HTTPReq r = new HTTPReq("http://www.stack.com/api.json");    
if(r.err) {
 showMessage(getMessage());
}

如果URL为空,则getMessage()将返回SocketExceptionIOException甚至是“空URL”。

不仅在catch块内执行e.printStackTrace(),还可以像这样将异常抛出:

throw e;     

然后,您可以像这样围绕调用代码:

try {
    HTTPReq r = new HTTPReq("http://www.stack.com/api.json");
} catch (Exception e) {
    // Show error message
}

首先,我认为您不需要所有这些:

SocketException,UnsupportedEncodingException,ClientProtocolException,因为它们扩展了IOException

但是如果您愿意,可以这样做:

public String download(String URL) throws IOException, Exception {

    try {
        if(somethingbad) {
            throws new Exception("My Message);
        }
    }
    catch (IOException e) {
        throw e;
    }
}

然后在另一个文件中:

try {
    // some stuff
}
catch (Exception e) {
    // do something with e.getMessage();
}
catch (IOException e) {
    // do something with e.getMessage();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM