铸造例外必要性

时间:2015-09-03 18:55:18

标签: java android debugging logging try-catch

快速问题的人,我看到很多关于try / catch块的代码,我已经看过很多次了,人们使用特定的Exceptions来做东西。 我的意思是,你有什么理由这样做? 我通常只是在catch块中放入一个Exception e,只是从Log中读出来......这是性能问题还是习惯?

2 个答案:

答案 0 :(得分:2)

拥有不同的异常类允许您拥有特定的异常代码,而无需确定类型。

例如,而不是写:

try {
   ...do some stuff
} catch( Exception e ) {
    if( e instanceof NullpointerException ) {
        ... do something
    } else if( e instanceof IOExceptio ) {
        ... do something else 
    }
}

你可以写:

try {
    ... do something ...
} catch ( NullpointerException epe ) {
    ... handle NPE
} catch ( IOException ioe ) {
    ... handle IO Exception
}

此外,您还可以选择仅捕获一些异常,并允许其他方法被抛出:

public void doSomeIO() throws IOException {

    try {
        ... do something ...
    } catch( NullpointerException ) {
        ... handle NPE
    }

}

然后你会打电话给它:

try {
    doSomeIO();
except ( IOException ) {
    handle the IO exception
}

通过这种方式,您可以在其所属的位置进行特定的异常处理,并允许其他人在可以更好地处理它们的地方冒泡。

答案 1 :(得分:0)

如果您捕获ClassCastException,则错误与捕获ArrayIndexOutOfBounds例外情况时的错误不同。你应该相应地处理它们。