铸造异常必要性
Casting of Exception necessity
快速提问各位,我看过很多关于 try/catch 块的代码,而且我已经看过很多次,人们使用特定的异常来处理某些事情。
我的意思是,你有什么理由这样做?
我通常只是在 catch 块中放入一个 Exception e,然后从 Log 中读取它...这是性能问题还是习惯?
拥有不同的异常 类 允许您拥有特定的异常代码而无需确定类型。
例如,而不是写作:
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
异常时的错误不同。你应该相应地处理它们。
快速提问各位,我看过很多关于 try/catch 块的代码,而且我已经看过很多次,人们使用特定的异常来处理某些事情。 我的意思是,你有什么理由这样做? 我通常只是在 catch 块中放入一个 Exception e,然后从 Log 中读取它...这是性能问题还是习惯?
拥有不同的异常 类 允许您拥有特定的异常代码而无需确定类型。
例如,而不是写作:
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
异常时的错误不同。你应该相应地处理它们。