检测窗口错误/弹出窗口
本文关键字:窗口 错误 检测 | 更新日期: 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这样的日志记录解决方案。