我在想,最好的方法是"如果其他方法都不能抓住它".

我是说,你在应用程序中处理了尽可能多的异常,

应用程序域不存在.CurrentDomain.未处理的异常事件是否捕获了所有内容?

旁注:Windows Vista公开了允许任何应用程序使用的本机API函数

推荐答案

我刚刚玩过AppDomain未处理的异常行为,

是的,在处理事件处理程序后,应用程序将被终止,并显示"程序停止工作"对话框.

:)

查看:

class Program
{
    void Run()
    {
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

        Console.WriteLine("Press enter to exit.");

        do
        {
            (new Thread(delegate()
            {
                throw new ArgumentException("ha-ha");
            })).Start();

        } while (Console.ReadLine().Trim().ToLowerInvariant() == "x");


        Console.WriteLine("last good-bye");
    }

    int r = 0;

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Interlocked.Increment(ref r);
        Console.WriteLine("handled. {0}", r);
        Console.WriteLine("Terminating " + e.IsTerminating.ToString());

        Thread.CurrentThread.IsBackground = true;
        Thread.CurrentThread.Name = "Dead thread";            

        while (true)
            Thread.Sleep(TimeSpan.FromHours(1));
        //Process.GetCurrentProcess().Kill();
    }

    static void Main(string[] args)
    {
        Console.WriteLine("...");
        (new Program()).Run();
    }
}

P.S..处理未经处理的申请.更高级别的ThreadException(WinForms)或DispatcherUnhandleException(WPF).

.net相关问答推荐

无法在Designer、VS2022、. NET 8中打开WinForms表单'

dotnet 8 web api在部署到docker后无法工作

在PowerShell中,XML子对象和属性是对象属性.它怎麽工作?

单线程单元 - 无法实例化 ActiveX 控件

代理、包装器或外观类之间有什么区别

如何摆脱 VS2008 中的目标程序集不包含服务类型错误消息?

C# 中 try/finally 的开销?

数据库架构更改后更新 LINQ to SQL 类的最佳方法

使用 C# 在 .NET 4.0 中 Task.Run 的替代方法是什么?

DBNull 的意义何在?

ASP.NET Core 等效于 ASP.NET MVC 5 的 HttpException

如何对无法加载的 VSTO 插件进行故障排除?

react 式扩展使用的好例子

在生产环境中部署调试符号(pdb 文件)有什么风险?

List 是否保证项目将按照添加的顺序返回?

.NET 委托类型的正确命名约定?

当它被抛出和捕获时,不要在那个异常处停止调试器

在 WPF 中设置 Tab 键顺序

有没有一种简单的方法来判断 .NET Framework 版本?

什么时候使用 Tuple 和 KeyValuePair 比较好?