【发布时间】:2016-02-09 17:19:52
【问题描述】:
简而言之,是否有可能让 C++ 强制方法的调用者放置一个 try...catch 块?
(澄清: 我不一定指直接调用者,我的意思是强迫它在某处被捕获。另外,我说的是在编译时强制。)
长:
我读过它不建议使用异常规范,并且无论如何它都不能正常工作(http://4thmouse.com/mystuff/articles/UsingExceptionsEffectively.html)
但普遍的共识似乎倾向于使用异常来返回错误,而不是用户编写返回错误代码的方法。
如果我正在编写一个库,那么如何阻止用户调用我的方法而不放置任何 try...catch 块,然后在我的代码抛出异常时让他的程序崩溃?
(需要明确的是,我只需要在用户堆栈中的某处捕获异常,不一定在立即调用代码中,如果不是这种情况,编译器会抱怨。)
【问题讨论】:
-
什么都没有。这就是为什么会有例外。您可以选择抓住它们或让它们“上楼”。如果根本没有捕捉到它们,那么操作系统会捕捉到它并且您的应用会关闭。
-
当您阅读“普遍共识”时,将其视为“法律”。返回错误代码而不是异常的库是一个真正的苦差事。 :)
-
问题是,你为什么在乎?这是他们的程序崩溃了,所以这是他们的问题。
-
@Angew,想象一下我们和他们共同负责一个项目。 :-)
-
@nappyfalcon:你的意思是每个人都讨厌使用异常规范的语言,因为他们必须使用异常规范?
标签: c++ c++11 exception exception-handling