Skip to main content
 首页 » 编程设计

exception之捕获一般异常真的那么糟糕吗

2024年02月27日39qq78292959

在使用 FXCop 分析一些遗留代码时,我想到在 try block 中捕获一般异常错误真的那么糟糕,还是应该寻找特定的异常。请考虑一下明信片。

请您参考如下方法:

显然,这是唯一真正答案是“视情况而定”的问题之一。

它主要取决于你在哪里捕获异常。一般来说,库在捕获异常方面应该更加保守,而在程序的顶层(例如在主方法中或在 Controller 中的操作方法的顶部等),您可以对捕获的内容更加自由。

这样做的原因是,例如您不想捕获库中的所有异常,因为您可能会掩盖与您的库无关的问题,例如“OutOfMemoryException”,您确实希望它冒泡,以便可以通知用户等。另一方面另一方面,如果您正在讨论在 main() 方法中捕获异常,该方法捕获异常,显示它然后退出......好吧,在这里捕获任何异常可能都是安全的。

关于捕获所有异常的最重要规则是,您永远不应该默默地吞下所有异常......例如Java 中是这样的:

try {  
    something();  
} catch (Exception ex) {} 

或者Python中的这个:

try: 
    something() 
except: 
    pass 

因为这些可能是最难追踪的问题。

一个好的经验法则是,您应该只捕获您自己可以正确处理的异常。如果您无法完全处理异常,那么您应该让它冒泡给可以处理的人。