System.CommandLine Обработка исключений - PullRequest
0 голосов
/ 05 мая 2020

Есть ли какая-либо документация по передовым методам обработки исключений с помощью System.CommandLine?

Я создаю обработчик через CommandHandler.Create и возвращаю результат InvokeAsyn c из моего консольного приложения.

Что мне делать, чтобы сообщать об исключениях пользователю моего приложения? Если я попробую / catch / log внутри своего обработчика и установлю Environment.ExitCode, он, конечно же, будет проигнорирован, потому что я возвращаю результат InvokeAsyn c, а мой обработчик не возвращает ничего, кроме задачи.

Каков рекомендуемый шаблон для возврата ненулевых кодов выхода?

1 Ответ

1 голос
/ 05 мая 2020

Метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...