【发布时间】:2010-11-08 15:01:53
【问题描述】:
Java 有compiler checked exceptions。当我过渡到 C++ 时,我了解到它没有检查异常。起初,我一直使用异常处理,因为它是一个很棒的功能。然而,过了一段时间我放弃了它,因为我遇到了一种情况每个函数都可能抛出异常。由于我编写的函数中只有一小部分会抛出异常(最多 25% 左右),因此我发现对不能抛出任何不可接受的函数进行异常处理的开销很大。
正因为如此,我真的很惊讶有很多开发人员更喜欢未经检查的异常。因此,我很想知道他们如何处理这个问题。 如果语言不支持已检查的异常,您如何避免进行不必要的异常处理的开销?
备注: 我的问题同样适用于 C++ 和 C#,并且可能适用于所有其他不具备编译器检查异常处理功能的语言。
【问题讨论】:
-
不是每个函数都可能抛出异常。声明为“noexcept”的函数不能抛出(如果他们尝试抛出,std::terminate() 将被调用)。
标签: c# java exception exception-handling