0

如何从 CommandLineParser 中捕捉到错误,以便我可以返回自己的错误代码?当从 SSIS 调用我的控制台应用程序时,我需要返回我自己的代码。

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var myParserResult = Parser.Default.ParseArguments<UploadFileCommand, DownloadFileCommand, CompressFileCommand>(args)
                .WithParsed<ICommand>(t => t.Execute());

            var parsed = myParserResult as NotParsed<object>;

         
             if (parsed != null && parsed.Errors.Any())
             {
                Console.WriteLine("Has Errors");
             }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        
    }

}
4

1 回答 1

0

该方法ParseArguments()将返回一个ParserResult<T>对象来指示解析是否成功。如果解析不成功,NotParsed<T>则返回一个实例。此类具有包含解析失败的Errors所有实例的属性。Error您可以在正常foreach()循环中使用它来迭代发现的错误:

ParserResult<Options> result = parser.ParseArguments<Options>(args);
Console.WriteLine(result);
NotParsed<Options> notParsed = result as NotParsed<Options>;
if (notParsed != null)
{
    foreach (var error in notParsed.Errors)
    {
        Console.WriteLine(error);
    }
}

这可能会打印以下调试输出:

CommandLine.NotParsed`1[Testing.Options]
CommandLine.UnknownOptionError
CommandLine.UnknownOptionError
于 2021-12-22T16:58:22.973 回答