3 回答
TA贡献1810条经验 获得超4个赞
显然,这是唯一的答案是“取决于”的问题之一。
它主要取决于您在哪里捕获异常。通常,库应该在捕获异常时更加保守,而在程序的顶层(例如,在主方法中或在控制器的action方法的顶部等)中,捕获的内容可以更加自由。
这样做的原因是,例如,您不想捕获库中的所有异常,因为您可能掩盖了与库无关的问题,例如“ OutOfMemoryException”,您实际上更喜欢冒泡,以便用户可以另一方面,如果您正在谈论的是在main()方法中捕获异常的方法,该方法捕获异常,先显示该异常,然后退出...好吧,在这里捕获几乎所有异常都是安全的。
捕获所有异常的最重要规则是,您绝不应该默默地吞下所有异常……例如,Java中这样的代码:
try {
something();
} catch (Exception ex) {}
或在Python中:
try:
something()
except:
pass
因为这些可能是一些最难追踪的问题。
一个好的经验法则是,您应该只捕获可以正确处理的异常。如果您不能完全处理异常,则应让它冒犯给可以处理的人。
TA贡献1801条经验 获得超8个赞
除非您在应用程序的前端进行一些日志记录和清理代码,否则我认为捕获所有异常是不好的。
我的基本经验法则是捕获您期望的所有异常,而其他任何东西都是错误。
如果您抓住了一切并继续前进,那有点像在汽车仪表板上的警告灯上贴上膏药。您再也看不到了,但这并不意味着一切都OK。
TA贡献1772条经验 获得超5个赞
是! (除了您应用程序的“顶部”)
通过捕获异常并允许代码执行继续,您表示您知道如何处理和规避或解决特定问题。您是在说这是可恢复的情况。捕获Exception或SystemException意味着您将捕获诸如IO错误,网络错误,内存不足错误,代码丢失错误,空指针取消引用之类的问题。说您可以处理这些是一个谎言。
在一个组织良好的应用程序中,这些不可恢复的问题应在堆栈中较高的位置处理。
另外,随着代码的发展,您不希望函数捕获新的异常,该异常将来会添加到被调用的方法中。
添加回答
举报