我是新开发者。 我正在使用C#处理ASP .NET Core项目,并使用“ try catch”进行错误处理。但是,由于太多的“ try catch”,我的项目变得越来越繁琐,并且代码也变得有些混乱。
我的问题是是否有可能创建“全局类”或其他方法来处理错误?
答案 0 :(得分:1)
是的。
您的问题已经以here的身份得到了回答
以下是使用不同项目类型的四个示例:
通过实现自定义ExceptionFilterAttribute
来实现ASP.NET Core MVC:
public class MyExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(ExceptionContext context)
{
Exception ex = context.Exception;
Logger.Error(ex);
}
}
[Route("api/[controller]")]
[MyExceptionFilter]
public class HomeController : Controller
{
// Action methods
}
通过在控制器中覆盖OnException
来实现ASP.NET MVC:
protected override void OnException(ExceptionContext context)
{
if (context.ExceptionHandled)
{
return;
}
Logger.Error(context.Exception);
context.Result = RedirectToAction(MVC.Error.Application());
context.ExceptionHandled = true;
}
通过订阅UnhandledException
事件来访问Windows应用程序:
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine(e.ExceptionObject.ToString());
}
通过在global.asax中添加Application_Error
处理程序来Web表单:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Logger.Error(ex);
}
答案 1 :(得分:-4)
如果是的话,答案是肯定的。但是,这取决于您正在进行的项目类型。您可以通过覆盖方法在global.cs中捕获未处理的异常,也可以创建Attribute类来捕获异常。