繁体   English   中英

异常必要性的铸造

[英]Casting of Exception necessity

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

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

例如,而不是写:

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
}

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

捕获ClassCastException的错误与捕获ArrayIndexOutOfBounds异常的错误不同。 你应该相应地处理它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM