C# C语言中是否有集中的错误处理过程#

C# C语言中是否有集中的错误处理过程#,c#,C#,有没有一种方法可以在不使用try-catch方法的情况下集中错误处理或异常处理?如果这是针对ASP.NET的,您可以向网站添加一个Global.asax文件,并处理应用程序错误方法 我通常是这样使用它的: void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs if (!System.Diagnostics.EventLog.So

有没有一种方法可以在不使用try-catch方法的情况下集中错误处理或异常处理?

如果这是针对ASP.NET的,您可以向网站添加一个
Global.asax
文件,并处理
应用程序错误
方法

我通常是这样使用它的:

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs
    if (!System.Diagnostics.EventLog.SourceExists("MySource"))
    {
        System.Diagnostics.EventLog.CreateEventSource("MySource",
            "Application");
    }
    System.Diagnostics.EventLog.WriteEntry("MySource",
        Server.GetLastError().ToString());
}

使用AppDomain的
未处理异常
事件:

    static void Main(string[] args)
    {

        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        // log the exception 
    }

对于ASP.NET,您将使用glabal.asax。

您可以尝试使用基于AOP的插件,如PostSharp,它将异常处理代码注入到具有自定义属性的类和/或方法中。这是在编译后完成的,因此您的源代码保持干净。查看此项-

如果您使用的是WinForms,您可以查看。不过它确实使用了
try catch
,因为我知道没有其他方法


查看ASP.NET和其他可能的.NET用途的其他答案。

如果OP不知道,则该方法中有关EventLog等的内容不是必需的-您可以根据需要处理它。重要的一点是Global.asax和
Server.GetLastError()
中方法的签名,它提供了最近抛出的异常。您是否对集中式错误回退感兴趣,这样,您就可以在关闭应用程序之前记录并显示一条友好的消息,或者您正在谈论一个实际处理错误的中心位置。前一种情况由
Application.ThreadException
(在WinForms中)和
AppDomain.unhandledeexception
支持。后一种情况通常是不可能的,因为中心位置通常没有足够的上下文来决定如何从错误中恢复。