如何在.NET应用程序中捕获所有异常/崩溃

7年前关闭。

.NET-

实现“捕获所有异常处理程序”的最佳方法是什么

我有一个.NET控制台应用程序,它崩溃了并向用户显示一条消息。我所有的代码都在一个try{<code>} catch(Exception

e){<stuff>}块中,但是仍然偶尔会显示错误。

在Win32应用程序中,您可以通过安装各种异常处理程序来捕获所有可能的异常/崩溃:

/* C++ exc handlers */

_set_se_translator

SetUnhandledExceptionFilter

_set_purecall_handler

set_terminate

set_unexpected

_set_invalid_parameter_handler

.NET世界中等效的东西是什么,因此我可以处理/记录/安静所有可能的错误情况?

回答:

与其他人发布的内容相反,捕获所有异常没有错。重要的是要妥善处理它们。如果您有堆栈溢出或内存不足的情况,则应用程序应为它们关闭。另外,请记住,OOM条件会阻止您的异常处理程序正确运行。例如,如果您的异常处理程序显示一个带有异常消息的对话框,则如果您内存不足,则对话框显示的空间可能不足。最好将其记录并立即关闭。

就像其他人提到的那样,您可以处理UnhandledException和ThreadException事件,以收集可能会错过的异常。然后只需在您的主循环中抛出一个异常处理程序(假设有一个winforms应用程序)。

另外,您应该注意,并非总是因内存不足而抛出OutOfMemoryExceptions。一个OOM条件可以触发代码中或框架中的各种异常,这些异常与真正的基础条件已耗尽内存这一事实没有任何关系。当根本原因实际上是内存不足时,我经常会看到InvalidOperationException或ArgumentException。

以上是 如何在.NET应用程序中捕获所有异常/崩溃 的全部内容, 来源链接: utcz.com/qa/417519.html

回到顶部