这是我需要帮助的面试问题.
您有以下ASP.NET代码隐藏类:
public partial class Page1 : Page { private string _value; public Page1() { if (DateTime.Now.Ticks % 10 == 0) _value = "Test"; } ~Page1() { if(_value.Equals("Test")) _value = string.Empty; } }
任何有人请求此页面,w3wp.exe进程意外终止.
>为什么会发生与用户看到黄色屏幕死亡(默认的ASP.NET错误页面)?
>为什么托管堆上总是出现OutOfMemoryException?
解决方法
提示:永远不会在析构函数/ finalizer中抛出异常,否则将会杀死GC运行的线程,而GC中的线程可能会变得丑陋.
虽然在.NET 1.1中有一些容忍在后台线程中抛出的异常,这些异常已被使用,并且不会使主机进程停止,但从CLR 2.0开始就不再这样了. Quote from the doc:
If Finalize or an override of Finalize
throws an exception,and the runtime
is not hosted by an application that
overrides the default policy,the
runtime terminates the process and no
active try-finally blocks or
finalizers are executed. This behavior
ensures process integrity if the
finalizer cannot free or destroy
resources.
在终结者中抛出异常是致命的.
原文地址:https://www.jb51.cc/csharp/93428.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。