C# C语言中是否有集中的错误处理过程#
有没有一种方法可以在不使用try-catch方法的情况下集中错误处理或异常处理?如果这是针对ASP.NET的,您可以向网站添加一个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
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
支持。后一种情况通常是不可能的,因为中心位置通常没有足够的上下文来决定如何从错误中恢复。