Dou*_*ugN 39 .net c# exception-handling
我有一个崩溃的.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
Run Code Online (Sandbox Code Playgroud)
什么是.NET世界中的等价物,所以我可以处理/记录/安静所有可能的错误情况?
Jua*_*nma 43
您可以向AppDomain.UnhandledException事件添加事件处理程序,并在抛出异常并且未捕获异常时调用它.
小智 27
与其他人发布的内容相反,捕获所有异常并没有错.重要的是要妥善处理它们.如果您有堆栈溢出或内存不足的情况,应该关闭应用程序.此外,请记住,OOM条件可以防止您的异常处理程序正常运行.例如,如果异常处理程序显示带有异常消息的对话框,则如果内存不足,则可能没有足够的空间用于对话框显示.最好记录并立即关闭.
正如其他人所提到的,您可以处理可能会错过的集合异常的UnhandledException和ThreadException事件.然后简单地在主循环周围抛出一个异常处理程序(假设一个winforms应用程序).
此外,您应该知道,对于内存不足的情况,并不总是抛出OutOfMemoryExceptions.OOM条件可以触发代码或框架中的各种异常,这些异常不一定与真实基础条件内存不足有关.当底层原因实际上没有内存时,我经常看到InvalidOperationException或ArgumentException.
Dre*_*ejc 10
在Global.asax中类是你的最后一道防线.看着:
protected void Application_Error(Object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)
方法
请注意,某些异常是危险的 - 或者大多数是无法捕获的,
| 归档时间: |
|
| 查看次数: |
53384 次 |
| 最近记录: |