System.CommandLine, исключения никогда не перехватываютсяC#

Место общения программистов C#
Anonymous
System.CommandLine, исключения никогда не перехватываются

Сообщение Anonymous »

мы используем следующий фрагмент кода, который использует пакет nuget system.commandline, проблема, которую мы видим, заключается в том, что любое исключение, возникающее в cmd.Invoke(args), не перехватывается в блоке catch, и выполняется операторfinally, что необходимо для того, чтобы гарантировать, что исключение перехвачено и мы можем правильно завершить работу.
using System;
using System.CommandLine;
using System.CommandLine.Invocation;

namespace cmdarguments
{
class Program
{
static void Main(string[] args)
{
try
{
var cmd = new RootCommand
{
// new Argument("name", "Your name."),
new Option("--optionOne", "The greeting to use."),
new Option("--optionTwo", "The greeting to use."),
new Option("--verbose", "Show the deets."),
};

cmd.Handler = CommandHandler.Create(HandleGreeting);
cmd.Invoke(args);

}

catch (System.Reflection.TargetInvocationException ex)
{
Console.WriteLine(ex);
}
catch (Exception e)
{
Console.WriteLine(e);
}
finally
{
Console.WriteLine("Program exited");
}
}
static void HandleGreeting(string? optionOne, string? optionTwo, bool verbose, IConsole console)
{
throw new Exception("hello");
Console.WriteLine(optionOne + optionTwo);
}

}
}

Вернуться в «C#»