我应该抓住std :: logic_error吗?

时间:2015-08-01 20:15:32

标签: c++ exception exception-handling logic

我知道std :: runtime_error和std :: logic_error之间的区别。

因此问题是我是否应该捕获std :: logic_error,因为如果代码中没有错误,那么首先应该永远不会抛出这些异常。这些例外仅用于发展目的吗?

1 个答案:

答案 0 :(得分:0)

我会抓住它,但是在调试构建中要么转储调用堆栈,要么重新抛出它[因此应用程序以“未捕获的异常”退出]。在发布版本中,捕获器应该打印一条消息,提示发生了什么,并且用户应该报告问题。

我的想法是,因为(至少有时候)你的应用程序可能会遇到你没有遇到的这种不寻常的用例。只是退出“未捕获的异常”实际上并不是一个非常用户友好的行为。所以做一些“不那么苛刻”的事情总是一个好主意 - 即使你真的没有办法纠正代码中的错误,如果用户对用户语言中发生的事情有一些解释,那就太好了。 (可能不是程序员)可以理解。