dotnet核心web api异常处理

时间:2018-03-12 19:38:18

标签: c# exception-handling .net-core asp.net-core-webapi unhandled-exception

我的dotnet 核心 web api项目中Program.cs中的Main方法具有以下代码。

public static void Main(string[] args)
{
    var logger = LogManager.LoadConfiguration("nlog.config").GetCurrentClassLogger();
    try
    {
        BuildWebHost(args).Run();
    }
    catch (Exception ex)
    {
        //NLog: catch setup errors
        logger.Error(ex, "An exception occurred during application start.");
        throw;
    }
}    

我还设置了一个像这样的异常处理中间件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseResponseCompression();
    app.UseMiddleware(typeof(HandleExceptionMiddleware));
    app.UseMvc();
}

我还应该添加AppDomain.CurrentDomain.UnhandledException吗?到Main方法 - 因为dotnet core web api是一个控制台应用程序?如果没有这种情况,我是否会失去/获得任何陷阱异常的机会?

1 个答案:

答案 0 :(得分:1)

通过在Program.cs中添加try / catch,您最终将捕获应用程序的启动异常,我认为您不应该处理这些异常,因为在任何情况下,如果您的应用程序无法启动,那么该怎么办?点。 关于App域异常处理,答案为“否”,由于document中提到的dotnet核心内置异常处理,您不需要处理它们,而您未处理应用程序的任何异常都由来处理网络本身。 简而言之,让该应用具有干净的启动状态,并使其抛出异常,然后您可以随时检查 dotnet run 的控制台中是否存在任何异常。