检测窗口错误/弹出窗口

本文关键字:窗口 错误 检测 | 更新日期: 2023-09-27 17:56:29

我的应用并未涵盖所有异常情况。在运行时,有时会弹出一个窗口,显示错误,例如:"System Null 引用异常"或"文件或目录已损坏且无法读取"。一旦出现错误窗口,它就不会消失,直到用户使用按钮响应。

我想捕获这些异常,不想向用户显示这些错误窗口。

检测窗口错误/弹出窗口

您可以通过签署 UnhandledException 事件来捕获 AppDoamin 级别上的所有异常

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

您需要将代码包装在 try {} catch(Exception e) {} 块中,以便您可以自己捕获错误。

例:

try
{
  // all of my code
}
catch ( Exception e )
{
  // show my own error dialog
}

听起来你需要回顾一下你的代码,看看你的异常处理。 要么有些代码段不在 try/catch 块内,要么您有一些 try/catch 块无法处理所有可能的异常。

你需要确保当你用try/catch块包装这些代码部分时,你不只是吃错误,而是记录它们。 您不希望应用程序在没有发生意外的情况下出现意外错误,因为这些意外错误可能会使应用程序处于易受攻击的状态。 有时,让应用程序崩溃比隐藏这些错误更好。

这是一篇关于使用try/catch的好文章:

http://msdn.microsoft.com/en-us/library/ms173160.aspx

实现 try/catch 时,请确保还考虑放入一个finally来清理任何应关闭的连接信息或其他代码。 它看起来像这样:

try
{
   //Your existing code
}
catch (Exception ex)
{
   //Here is where you log the error - ex contains your entire exception so use that in the log
}
finally
{
   //Clean up any open connections, etc. here
}

请注意,catch 块捕获泛型Exception因此应在此处捕获上面未捕获的所有错误(在更具体的 catch 块中)。

尝试将所有MessageBox.Show()语句替换为类似 Logger.LogInfo(ex.Message); 的内容。也许使用像Log4Net这样的日志记录解决方案。