[英]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()
将返回SocketException
或IOException
甚至是“空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.