如何在Android中创建错误处理程序。在.Net中,我只需创建一个处理程序,切换错误代码以传递用户所需的正确响应。
在这种情况下,我使用一个由try和catch包围的SAX解析器,当出现错误时,我显然得到一条消息,但没有唯一的错误ID。 try \ catch块可能会捕获10个错误但是如何区分错误以便我可以尝试处理预期的错误?
理想情况是这样的:
switch (e.getErrorID){
case 1000:
//Handle This Expected Error
break;
case 1064:
//Handle This Expected Error
break;
case 2025:
//Handle This Expected Error
break;
default:
//Unexpexted Error
}
也许我应该提一下,我试图捕获的错误是空文档
答案 0 :(得分:3)
Jay Dee,
在Java中,它通常不赞成拥有通用异常处理程序。此链接提供了一个很好的解释:http://source.android.com/source/code-style.html#dont-catch-generic-exception
你会想做更像......的事情。
try {
//stuff
} catch (NumberFormatException e) {
//specific handling for NumberFormatException
} catch (NullPointerException e) {
//specific handling for NullPointerException
}
答案 1 :(得分:1)
您可以抛出特定的异常(可能都是扩展公共基本异常)并在其自己的catch
块中处理每个异常。
您也可以使用getErrorCode
方法实现单个通用异常,您可以在该方法中切换单个catch
块。 (顺便说一句,这是SQLException)中使用的方法。
特殊例外方法:
throw new MissingAttributeException("a_mandatory_attr");
throw new InvalidAttributeValueException("some_attr", badValue);
或通用方法:
throw new GenericParsingException(MISSING_ATTRIBUTE, "a_mandatory_attr");
throw new GenericParsingException(INVALID_ATTRIBUTE_VALUE, "some_attr", badValue);
您可能会发现抛出和处理特定异常可能更容易。这样可以轻松构建和访问不同的内容。
答案 2 :(得分:1)
您可以在代码中使用多个catch块吗?
try {
// code
}catch(error1 e){
//error1 handling code
}catch(error2 e){
//error2 handling
}
等等。