我应该赶上 std::logic_error 吗?
Should i catch std::logic_error?
我知道 std::runtime_error 和 std::logic_error 之间的区别。
所以出现了我是否应该捕获 std::logic_error 的问题,因为如果代码中没有错误,这些异常不应该首先抛出。这些例外仅用于开发目的吗?
我会捕捉到它,但在调试版本中要么转储调用堆栈,要么重新抛出它 [因此应用程序以 "uncaught exception"] 退出。在发布版本中,捕手应该打印一条消息,提示发生了什么,并且用户应该报告问题。
我的想法是,因为(至少有时)您的应用程序可能会遇到您没有遇到的这些不寻常的用例。仅以 "uncaught exception" 退出确实不是一种非常用户友好的行为。所以做一些 "a little less harsh" 总是一个好主意——即使你真的无能为力来纠正代码中的错误,如果能向用户解释在用户使用的语言中发生的事情,那就太好了 (谁可能不是程序员)可以理解。
我知道 std::runtime_error 和 std::logic_error 之间的区别。
所以出现了我是否应该捕获 std::logic_error 的问题,因为如果代码中没有错误,这些异常不应该首先抛出。这些例外仅用于开发目的吗?
我会捕捉到它,但在调试版本中要么转储调用堆栈,要么重新抛出它 [因此应用程序以 "uncaught exception"] 退出。在发布版本中,捕手应该打印一条消息,提示发生了什么,并且用户应该报告问题。
我的想法是,因为(至少有时)您的应用程序可能会遇到您没有遇到的这些不寻常的用例。仅以 "uncaught exception" 退出确实不是一种非常用户友好的行为。所以做一些 "a little less harsh" 总是一个好主意——即使你真的无能为力来纠正代码中的错误,如果能向用户解释在用户使用的语言中发生的事情,那就太好了 (谁可能不是程序员)可以理解。