尽管阅读了很多文章(在这个主板上有些文章),我仍然在想知道何时使用例外的适当时机。我没有看到很多方法在平台API中返回错误代码,但有些人仍然坚持认为异常只应用于需要控制流专门跳转的异常事件。我一直在使用异常来处理程序中的泛型条件断言。这是不好的做法吗?或者我应该使用旧方法返回错误代码以进行一般性失败?
答案 0 :(得分:4)
我一直在使用异常来处理程序中的通用条件断言。这是不好的做法吗?
是的,请改用验证。
或者我应该使用旧方法返回错误代码以解决一般性失败问题?
不,请改用例外。
所以,它应该(只是说)
if( isValidIndex() ) { // <-- Validation : GOOD
return array.atPosition( x );
}
而不是:
try {
doSomethingHazzarous();
} catch( ArrayIndexOutOfBoundsException aioobe ) {}
它应该是:
void somethingStreange() throws IllegalStateException {
somethingsWrongWithTheState();
}
而不是:
void somethingStranger() {
int code = somethingsWrongWithTheState(); // <-- Error code: BAD
if ( code == SomeClass.ILLEGAL_STATE ) {
internalFlag = SomeOther.SOME_STATE;
return;
}
}