快速问题的人,我看到很多关于try / catch块的代码,我已经看过很多次了,人们使用特定的Exceptions来做东西。 我的意思是,你有什么理由这样做? 我通常只是在catch块中放入一个Exception e,只是从Log中读出来......这是性能问题还是习惯?
答案 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
例外情况时的错误不同。你应该相应地处理它们。