我的应用未涵盖所有异常情况。在运行时,有时会弹出一个窗口,显示ex:“System Null reference exception”或“文件或目录已损坏且无法读取”的错误。一旦出现错误窗口,它就不会消失,直到用户用按钮响应。
我想捕获这些异常,并且不希望向用户显示这些错误窗口。
答案 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这样的日志记录解决方案。