System.CommandLine异常处理

Jef*_*eff 6 c# .net-core dragonfruit

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

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

如果向应用程序的用户报告异常情况,我应该怎么做?如果我在处理程序中尝试/捕获/登录并设置Environment.ExitCode,它当然会被忽略,因为我返回 InvokeAsync 的结果,而我的处理程序除了任务之外不返回任何内容。

返回非零退出代码的推荐模式是什么?

Sir*_*ufo 3

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();
    ...
}
Run Code Online (Sandbox Code Playgroud)

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