Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 捕获完全意外的错误_C#_Visual Studio 2010_Visual Studio_Error Handling_Runtime Error - Fatal编程技术网

C# 捕获完全意外的错误

C# 捕获完全意外的错误,c#,visual-studio-2010,visual-studio,error-handling,runtime-error,C#,Visual Studio 2010,Visual Studio,Error Handling,Runtime Error,我有一个ErrorRecorder应用程序,它打印出错误报告,并询问用户是否希望将该报告发送给我 然后,我有了主应用程序。如果发生错误,它会将错误报告写入文件,并要求ErrorRecorder打开该文件以向用户显示错误报告 因此,我使用Try/Catch捕获了大部分错误 但是,如果发生完全出乎意料的错误并关闭了我的程序,该怎么办 是否有一个全局/覆盖方法或类似的方法,它告诉程序“如果发生意外错误,在关闭之前,调用“ErrorRecorderView()”方法”我想这就是你想要的-你可以在appd

我有一个ErrorRecorder应用程序,它打印出错误报告,并询问用户是否希望将该报告发送给我

然后,我有了主应用程序。如果发生错误,它会将错误报告写入文件,并要求ErrorRecorder打开该文件以向用户显示错误报告

因此,我使用Try/Catch捕获了大部分错误

但是,如果发生完全出乎意料的错误并关闭了我的程序,该怎么办


是否有一个全局/覆盖方法或类似的方法,它告诉程序“如果发生意外错误,在关闭之前,调用“ErrorRecorderView()”方法”

我想这就是你想要的-你可以在appdomain级别处理异常-即在整个程序中。


}

谢谢,这是我要找的。不过,我必须对它进行一点研究,因为出于某种原因,它在Visual Studio中的版本上工作,但是,当它被编译成.exe时,它不工作。通过添加:Application.ThreadException+=ProcessThrException;在我链接到的页面上,有关于可能抢占此事件的更多信息-您可能需要处理exe中的其他事件?(ETA-我猜我们在同一时间输入了相同的内容:))tere是一些插件,它们可以为您实现这一点(甚至更多)。示例(不是针对C#,但您了解了自动错误记录和报告的概念:
using System;
using System.Security.Permissions;

public class Test
{

[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
public static void Example()
{
    AppDomain currentDomain = AppDomain.CurrentDomain;
    currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);

    try
    {
        throw new Exception("1");
    }
    catch (Exception e)
    {
        Console.WriteLine("Catch clause caught : " + e.Message);
    }

    throw new Exception("2");

    // Output: 
    //   Catch clause caught : 1 
    //   MyHandler caught : 2
}

static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
    Exception e = (Exception)args.ExceptionObject;
    Console.WriteLine("MyHandler caught : " + e.Message);
}

public static void Main()
{
    Example();
}