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