为了账号安全,请及时绑定邮箱和手机立即绑定

如何在WinForms应用程序中创建捕获所有“未处理”异常的内容?

如何在WinForms应用程序中创建捕获所有“未处理”异常的内容?

C#
三国纷争 2019-08-12 16:19:12
如何在WinForms应用程序中创建捕获所有“未处理”异常的内容?到目前为止,我只是在程序Application.Run的Program.cs入口点周围放置一个try / catch块。这会在调试模式下很好地捕获所有异常,但是当我在没有调试模式的情况下运行程序时,不再处理异常。我得到了未处理的异常框。我不希望这种情况发生。我希望在非调试模式下运行时捕获所有异常。该程序有多个线程,最好是来自它们的所有异常都被同一个处理程序捕获; 我想记录数据库中的异常。有没有人对如何做到这一点有任何建议?
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

在NET 4中,默认情况下不再捕获某些异常这些往往是异常,表示可执行文件的(可能是致命的)损坏状态,例如AccessViolationException。

尝试在main方法前面使用[HandleProcessCorruptedStateExceptions]标记,例如

using System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions[HandleProcessCorruptedStateExceptions]public static int Main(){
    try
    {
        // Catch any exceptions leaking out of the program
        CallMainProgramLoop();
    }
    catch (Exception e) // We could be catching anything here
    {
        System.Console.WriteLine(e.Message);
        return 1;
    }
    return 0;
  }


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 487 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信