Java处理错误&;例外情况
我有一个可以从internet下载文件的类:Java处理错误&;例外情况,java,android,Java,Android,我有一个可以从internet下载文件的类: public String download(String URL) { try { if(somethingbad) { // set an error? return false; } } //... catch (SocketException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
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
}
不要只在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();
}
首先,我认为您不需要所有这些: 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();
}
我只需要做:e.getMessage()来自我的另一个类??另外,如果
if(somethingbad){
失败,我将如何触发getMessage()?您必须修改下载方法的签名,以指示它使用throws子句抛出异常。IDE应该可以帮助您使用正确的语法。我使用的是android studio,但仍然没有得到它>,我只需要这样做:e.getMessage()从我的另一个类中??如果希望在catch块中获取消息,则可以。>另外,如果if(somethingbad)为{失败?什么设置somethingbad的值?如果download方法引发异常,控件将进入相应的catch块。该方法将不会继续执行。我只需执行:来自另一个类的e.getMessage()?另外,如果If(somethingbad),我将如何触发getMessage(){
失败?您必须修改下载方法的签名,以指示它使用throws子句抛出异常。IDE应该可以帮助您使用正确的语法。我使用的是android studio,但仍然没有得到它>,我只会这样做:e.getMessage()从我的另一个类中??如果希望在catch块中获取消息,您可以。>另外,如果if(somethingbad){失败,我如何触发getMessage()?什么设置somethingbad的值?如果下载方法引发异常,控件将进入相应的catch块。该方法将不会继续执行。catch(IOException)应在catch(Exception)之前。否则,IOException将进入第一个catch块。catch(IOException)应在catch(Exception)之前。否则,IOException将进入第一个catch块。