在飞镖中catch(e)
和on Exception catch(e)
有什么区别?
不带on子句的AVOID捕获。
使用不带on子句的catch子句会使您的代码易于遇到不会抛出的意外错误(因此不会引起注意)。
坏:
try {
somethingRisky()
} catch(e) {
doSomething(e);
}
好:
try {
somethingRisky()
} on Exception catch(e) {
doSomething(e);
}
答案 0 :(得分:2)
} on Exception catch (e) {
将捕获所有实现Exception
的抛出对象。
排除大多数错误(实现Error
)
} catch (e) {
将捕获所有抛出的对象,包括异常和错误-以及可能抛出的其他任何对象。大多数抛出的对象实现Exception
或Error
,但这只是一个约定。可以抛出任何非null
对象。
我实际上也建议反对on Exception
。异常不是错误,它们旨在作为函数来替代返回值,但是异常仍然是函数API的一部分,并且您仅应捕获实际打算处理的异常。由于Exception
本身没有任何信息,因此您应该捕获该函数记录为抛出的子类型,以便可以使用可用信息来处理例外情况。
如果您不打算处理它,则最好将异常视为错误。
在某些情况下,仅使用} catch (e) {
捕获所有内容是合理的,主要是在用于包装其他用户代码的框架代码中,并且需要确保用户代码错误或未处理的异常不会破坏整个程序。