切换错误代码

时间:2011-05-18 15:04:40

标签: android

如何在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
}

也许我应该提一下,我试图捕获的错误是空文档

3 个答案:

答案 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
}

等等。