System.CommandLine异常处理

时间:2020-05-05 02:07:40

标签: c# .net-core dragonfruit

是否有有关使用System.CommandLine进行异常处理的最佳实践的文档?

我通过CommandHandler构建处理程序。创建并从控制台应用程序返回InvokeAsync的结果。

如何向我的应用程序用户报告异常?如果我在处理程序中尝试/捕获/日志并设置Environment.ExitCode,则它当然会被忽略,因为我返回的是InvokeAsync的结果,而我的处理程序只返回一个任务。

建议返回非零退出代码的模式是什么?

1 个答案:

答案 0 :(得分:1)

CommandHandler.Create方法有一些重载,您可以在其中返回int用作ExitCode

public static class CommandHandler
{
    ...
    public static ICommandHandler Create(Func<int> action) =>
        HandlerDescriptor.FromDelegate(action).GetCommandHandler();

    public static ICommandHandler Create<T>(
        Func<T, int> action) =>
        HandlerDescriptor.FromDelegate(action).GetCommandHandler();
    ...
}

https://github.com/dotnet/command-line-api/blob/master/src/System.CommandLine/Invocation/CommandHandler.cs