我的任务是创建一种全局错误处理解决方案,因此我创建了一个HttpModule
,将其放入现有的ASP.NET解决方案中。有时这些现有的Web应用程序将有自己的错误处理(try / catch),可能会执行某些特定的操作。
问题当应用遇到异常时,OnError
中的HttpModule
是否会持续发生,因为它的全局范围超过了特定的try / catch范围内应用程序吗?它会每次都开火吗? OnError
会捕获每个应用程序异常,处理和未处理吗?当我说处理时,我的意思是如果我的应用程序中的某个部分代码已经“处理”了错误,它会在OnError
中结束吗?
答案 0 :(得分:3)
您的HttpModule只会获取应用程序未捕获的异常,clearly stated in the documentation
如果抛出异常的代码位于try...catch
块内,则不会将异常传播到全局错误处理程序。
如果您处理异常并想要隐藏默认的ASP.NET错误消息,则可以使用ClearError
方法执行此操作。
如果您真的想知道所有异常,可以使用AppDomain
上的FirstChanceException
事件在捕获异常时直接通知。但是,您可能会捕获比预期更多的异常 - 在框架内抛出并优雅地处理许多异常。