将主应用程序对象包含在 try-catch 块中捕获所有崩溃
Will enclosing main application object in try-catch block catch all crashes?
如果我将主应用程序对象包含在try-catch块中,它会捕获任何不可预见的崩溃吗?如果应用程序由于任何原因崩溃,控件会来这里吗?
下面是一个使用 Qt 应用程序的示例,但假设此应用程序非常大,加载其他 dll 等,但这仍然是应用程序的主体。那么,保护这个块,有效地保护该应用程序中的所有内容吗?
#include <QApplication>
#include <QTextEdit>
int main(int argv, char **args)
{
int exit_code = 0;
try
{
QApplication app(argv, args);
QTextEdit textEdit;
textEdit.show();
exit_code = app.exec();
}
catch(...)
{
// will this catch all crashes?
}
return exit_code;
}
从技术上讲,异常处理程序显然会捕获该块中抛出的任何异常,但我想知道这如何扩展到将整个应用程序包含在捕获块中。
我也知道它可能不会做任何有用的事情,因为我们不知道抛出/捕获了什么异常,但我想知道我是否可以使用它来捕获神秘而随机的崩溃?例如,它会捕获访问违规0xc0000005排除吗?
绝对你仍然可以崩溃。
try-catch
块将仅捕获通过 throw
关键字引发的异常。
例如,如果在内存之外访问,或者除以零,则程序可能会崩溃,也可能不会崩溃。
此外,try-catches
无法阻止abort()
终止程序。
您的access violation
可能是分段错误。 您将需要防止问题发生。
相关文章:
- 编译器是否必须始终删除 try-catch 块(如果它被证明是非抛出的)
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 我可以使用 try catch 语句来捕获任何错误而不是具体错误吗?
- 在大型应用程序的main上使用try-catch
- RapidXML 节点在 try catch 块中具有正确的值,但它在块外为 nullptr
- 提取 try-catch 时出现运行时错误
- std::unique_ptr 在 try-catch 块中未捕获取消引用异常
- 何时删除 try-catch 块中的指针
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- 循环try..catch ..确保输入有效或使用控制语句
- 构造函数中的异常:init() 方法、指针、大型 try/catch 或
- C++ C2509 在讲师的定义中使用 try: - catch
- 为什么未达到的 try-catch 块会增加运行时时间
- 在 C++ 中使用 try-catch 进行删除 [] 或删除操作是否必要
- ex.nested try-catch中的什么()更改
- C++在try-catch语句处崩溃
- 即使使用try.catch块,应用程序也会崩溃
- 多线程Win32 c++程序在多线程中使用try/catch时会崩溃
- 将主应用程序对象包含在 try-catch 块中捕获所有崩溃
- 当使用C++目标的释放模式时,为什么这个Haxe try-catch块仍然崩溃