哪些Asp.net异常可以做什么?
如果我写这个代码哪些Asp.net异常可以做什么?,asp.net,iis-7,.net-4.0,exception-handling,w3wp,Asp.net,Iis 7,.net 4.0,Exception Handling,W3wp,如果我写这个代码 protected void Page_Load(object sender, EventArgs e) { Page_Load(sender, e); } 我得到一个错误(无休止的递归): 并且w3wp.exe进程从任务管理器终止 很好… 但是,如果我这样做: throw new ApplicationException(); //or SystemException(); 它仅出现在常规异常页面中。(w3wp.exe仍处于运行状态)
protected void Page_Load(object sender, EventArgs e)
{
Page_Load(sender, e);
}
我得到一个错误(无休止的递归):
并且w3wp.exe
进程从任务管理器终止
很好…
但是,如果我这样做:
throw new ApplicationException(); //or SystemException();
它仅出现在常规异常页面中。(w3wp.exe仍处于运行状态)
问题:
- 什么样的异常导致w3wp.exe关闭
- 什么样的异常导致应用程序池关闭李>
谢谢。这很可能是著名的。这是由无限循环引起的,因为您一次又一次地调用方法
Page\u Load
从MSDN:
在.NET Framework的早期版本中,您的应用程序可能会
StackOverflowException对象(例如,要从
无界递归)。然而,目前不鼓励这种做法
因为需要大量的额外代码才能可靠地捕获
堆栈溢出异常并继续程序执行
从.NET Framework 2.0版开始,StackOverflowException
try-catch块和相应的
进程在默认情况下终止。因此,建议用户
编写代码以检测和防止堆栈溢出。例如
如果应用程序依赖于递归,请使用计数器或状态
条件终止递归循环。请注意,应用程序
托管公共语言运行库(CLR)的可以指定
卸载堆栈溢出异常所在的应用程序域
发生并让相应的进程继续。更多
有关详细信息,请参阅ICLRPolicyManager界面和主机概述
您可能想看看这个答案:
异常的原因是内存溢出。应用程序可以通过多种方式导致这种情况,没有必要猜测特定的场景。我认为好的主机提供商应该受到保护,不受行为不端的应用程序的影响。添加到alrdy提供的答案中。因为服务器中的每个网站都在一个单独的AppDomain中运行,所以你无法停止整个过程。因此,如果您的代码出现错误,则只会杀死您的appdomain wud。查看应用程序日志-异常详细信息应显示在那里。@moguzalp No.也是在非调试模式下。但那很好。我在生产中没有真正的例外。我只是想了解哪些异常可以终止什么…(只是为了学习而测试)嗨,蒂姆,是的,我知道,但这只是众多异常中的一个。我想让我的思想组织起来:
哪个异常(它们的特征)可以终止:1)应用程序池2)w3wpI非常确定OutOfMemoryException
也会有同样的效果。@volpav-nope内存不足,无法继续执行程序。
w3wp.exe仍在运行。(好的,现在我只是猜测)如何AccessViolationException
?请尽量保持txt spch 2的最小值?道具帽也不错。