- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
C++ 标准库似乎有 std::uncaught_exception
, 微软有这个 exact function
.
但微软也有__uncaught_exception
.我在文档中看不到任何显着差异。那么,有区别吗?如果两者都可供我使用,我应该更喜欢其中一个,还是同时使用它们以确保万无一失?
// Option 1
if (uncaught_exception())
{
// report it.
}
// Option 2
if (__uncaught_exception())
{
// report it
}
// Option 3
if (uncaught_exception() || __uncaught_exception())
{
// report it
}
最佳答案
有没有区别,没多大关系。导致创建该功能的前提存在固有缺陷,它基本上是无用的。
该函数旨在测试以确定在执行此代码(析构函数或从析构函数调用的代码)时是否存在异常,这将表明堆栈正在展开并且第二个异常将终止程序。
除了它不会。两个异常不能在同一个堆栈帧中处于事件状态,但可以有多个异常在运行中。异常被抛出,堆栈开始展开,并且局部对象的析构函数之一最终调用了抛出异常的代码,而 在 try
block 中。完全合法且很好,两个异常同时展开堆栈的不同部分。
函数 std::uncaught_exception
因此不能用于确定抛出新的异常是否会导致 std::terminate
被调用以及引发异常的主要原因设计丢失。以无用的功能结束。
我无法想象可以很好地利用 std::uncaught_exception
的任何用例。对于最初的预期目的,只需确保您的析构函数是 noexcept(true)
(这是 C++11 及更高版本中的默认值)并且不要抛出
关于c++ - std::uncaught_exception 和 Microsoft __uncaught_exception 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565250/
我刚刚注意到了 http://en.cppreference.com/w/cpp/error/uncaught_exception C++17 将用 std::uncaught_exceptions(
什么是 uncaught_exception 的好用例? 最佳答案 Herb Sutter 似乎给出了很好的建议 here .他不知道它有什么好的用途,并说在某些情况下它看起来很有用,但实际上并没有用
我有以下问题。 我有回收的数据库连接(放回池中)。 例如: { session sql(conn_str); // take connection from pool sql.exec("inse
这个问题在这里已经有了答案: How to catch segmentation fault in Linux? (5 个答案) Catching access violation exceptio
介绍 有posts和 articles关于 std::uncaught_exception 的用法和原理。 Functionality这个函数提供的归结为 std::uncaught_exceptio
有些文章的结论是“永远不要从析构函数中抛出异常”,“std::uncaught_exception() 没有用”,例如: http://www.gotw.ca/gotw/047.htm (作者:赫伯·
Herb Sutter 在他的文章中 http://www.gotw.ca/gotw/047.htm指出我们不能在析构函数中使用uncaught_exception, // Why the wron
人们强烈反对从析构函数中抛出异常。取this answer举个例子。我想知道是否std::uncaught_exception()可用于可移植地检测我们是否由于某些其他异常而处于展开堆栈的过程中。 我
我在 DLL 中有一个类,它有一个析构函数来检查 std::uncaught_exception()。如果在可执行文件的 try/catch block 中使用,如果抛出异常,它不会说 true。 下
C++ 标准库似乎有 std::uncaught_exception , 微软有这个 exact function . 但微软也有__uncaught_exception .我在文档中看不到任何显着差
我正在测试最近在 C++17 下测试期间出现的问题。这是源文件: $ cat test.cxx #if __EXCEPTIONS && __has_feature(cxx_exceptions) #
我注意到我的 Mac 上的 stock libc++ 中缺少 std::uncaught_exceptions 符号: $ clang++ -v; otool -L /usr/lib/libc++.d
LuaJIT 手册 states : Lua errors can be caught on the C++ side with catch(...). The corresponding Lua e
这个问题在这里已经有了答案: Scope(failure) in C++11? (2 个回答) 关闭9年前。 毫无疑问,很多人都熟悉 Alexandrescus 先生的 ScopeGuard 模板(现
我是一名优秀的程序员,十分优秀!