Java处理错误&例外

时间:2015-01-07 18:04:06

标签: java android

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

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());
}

并且getMessage()将返回SocketExceptionIOException或甚至"空网址"如果网址为空。

2 个答案:

答案 0 :(得分:2)

不是只在catch块中执行e.printStackTrace(),而是像这样抛出异常:

throw e;     

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

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

答案 1 :(得分:2)

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

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();
}