从事 Java 工作很多年了,所以一直没有关注 C++。有finally子句是否已添加到语言定义中的 C++ 异常处理中?
有没有一种流行的模仿 Java 的 try/finally 的习惯用法?
我还担心 C++ 没有一个终极超类型来处理所有可能抛出的异常 - 就像 Java 的 Throwable 类。
我可以写:
try {
// do something
} catch(...) {
// alas, can't examine the exception
// can only do cleanup code and perhaps rethrow, ala:
throw;
}
附录编辑:
我最终接受了这个答案
得票最多,即使用
析构函数进行清理。当然,
从我自己的评论来看,很明显我
不完全同意这一点。
然而,C++ 就是这样,所以在
我的申请努力
介意,我或多或少会努力
坚持共同社区
实践。我将使用模板类
包装尚未拥有的资源
类析构函数(即 C 库
资源),从而赋予他们
析构函数语义。
新的附录编辑:
嗯,而不是finally然后是一个闭包
也许有特色?闭包结合
ScopeGuard 方法(请参阅其中之一
下面的答案)将是一种方法
任意完成清理
操作和清理权限
代码的外部范围上下文。清理可以按照 Ruby 编程中常见的惯用方式来完成,其中它们在打开资源时提供清理块。不是一个
正在考虑的闭合功能
C++?
通过有效地使用析构函数。当在 try 块中引发异常时,在其中创建的任何对象都将立即被销毁(因此调用其析构函数)。
这与 Java 不同,在 Java 中,您不知道何时调用对象的终结器。
UPDATE: 直接从马嘴里说出来:为什么 C++ 不提供“finally”结构? http://www.research.att.com/~bs/bs_faq2.html#finally
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)