如果我將主應用程序對象放在try-catch塊中,它是否會捕獲任何無法預料的崩潰?如果應用程序由於任何原因而崩潰,控制是否會來到這裏?將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;
}
技術上的例外處理程序顯然趕上該塊內拋出的異常,但我想知道如何做到這一點規模的catch塊包圍整個應用程序。
另外我知道它可能不會做任何有用的事情,因爲我們不知道拋出/捕獲了什麼異常,但我想知道是否可以使用它來捕捉神祕而隨機的崩潰?它會捕獲例如訪問衝突0xc0000005 excpetion嗎?
異常處理無法捕捉*任何*崩潰。它只處理異常。 –
'它會捕獲例如訪問衝突0xc0000005 excpetion?' – deviantfan
您必須捕獲來自操作系統的信號並處理它。如果你的程序被操作系統以這種方式打敗了,那麼程序就會被破壞,很可能已經無法修復。試圖繼續是蠻幹的。 – user4581301