可能重复:
何时以及如何使用异常处理?
我已经看到程序员在C#和C++ 中的每个方法中都有"try {} catch(){}"块.在C#中似乎很平常.但在C++中它似乎模糊不清.使用它们的正确方法是什么?
实际上只有三次你应该使用try/catch:
在应用程序的顶层,您可以向用户显示友好的错误消息(并希望记录一些有用的信息,以便您以后可以解决问题).
何时可以从异常中正确恢复(或者至少清理不再需要的资源).
当你要用异常信息做某事时,然后冒出异常.
除了这三种情况之外,没有理由使用try/catch块.您应该让Exception冒泡到调用者,以便他们可以在需要时处理它.
处理异常的意图应该推迟到可以做一些有用的事情,无论是通知用户,重新尝试还是其他什么.因此,捕获每个函数中的异常通常是糟糕的设计.
正如Justin所说,你可能需要捕获并重新抛出异常才能进行局部清理 - 这可以解释C#代码.
在C++中,惯用方法是RAII,它使用确定性破坏来执行本地清理,并避免捕获处理程序,这些处理程序不能真正处理但只是重新抛出.