检测Windows错误/弹出窗口

时间:2011-05-16 15:11:41

标签: c# .net exception-handling

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

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

4 个答案:

答案 0 :(得分:4)

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

示例:

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

答案 1 :(得分:4)

您可以通过签署UnhandledException事件

来捕获AppDoamin级别的所有异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

答案 2 :(得分:1)

听起来你需要回顾一下你的代码并查看你的异常处理。要么部分代码不在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块中)。

答案 3 :(得分:0)

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