在ASP.NET中如何处理未处理的异常?

在Visual Studio中调试应用程序时,有2个选项用于突破异常.抛出异常后立即中断,只有当异常未被捕获时才会断开.这在开发桌面应用程序时工作正常.但是,在开发ASP.NET应用程序时,所有异常最终都被IIS中的代码所捕获.是否可以禁用此行为,以便当我的ASP.Net应用程序代码无法捕获异常时调试器中断?

编辑:

只是为了清楚,我不想破坏每当一个异常被抛出,多次他们被处理好我的代码,我不想停止每一个异常.我只想停止不被我的代码处理的异常.

编辑:

这在Visual Studio 2008中似乎不是一个问题.在Visual Studio 2003中,所有异常都被视为用户处理,因为ASP.NET运行时捕获了所有异常,以免导致Web服务器进程失效.看起来在Visual Studio 2008中,检查用户未处理的异常时,不会计算这种异常捕获类型.

解决方法

在Debug->例外情况下,检查公共语言运行时异常的“Throwwn”列(至少).检查’Thrown’为您感兴趣的其他例外.

现在,如果调试器被连接(主动调试或“附加到进程”),您的ASP.NET应用程序将在CLR异常(或您选择的任何其他异常)中断.

[编辑]

如果您想仅在未处理的例外情况下,在Debug->例外情况下,请在所有异常类型上取消选中“Thrown”,并确保对您感兴趣的异常进行“User-unhandled”.

Exception Interface http://scatterbright.com/debug-exceptions.png

然后,如果连接了调试器,您的ASP.NET应用程序会破坏您所选择的每个用户未处理的异常,而不管运行时将最终捕获异常的事实.样品:

Debugger breaking on User-unhandled exception http://scatterbright.com/debugcatchingunhandledex.png

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...