java 当用户只想打印用法时,如何避免必需选项的解析器异常?

bluesky1年前 ⋅ 256 阅读

ChatGPT的回答仅作参考:

在Java中,可以使用Apache Commons CLI库来解析命令行参数,并且可以设置选项为可选的。以下是一个示例代码:

```java
import org.apache.commons.cli.*;

public class CommandLineParserExample {
    public static void main(String[] args) {
        Options options = new Options();
        options.addOption("h", "help", false, "Print usage information");

        CommandLineParser parser = new DefaultParser();
        try {
            CommandLine cmd = parser.parse(options, args);

            if (cmd.hasOption("h")) {
                printUsage();
            } else {
                // 执行其他操作
            }
        } catch (ParseException e) {
            System.out.println("Invalid command line arguments: " + e.getMessage());
            printUsage();
        }
    }

    private static void printUsage() {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("java -jar yourjarfile.jar [options]", options);
    }
}
```

在上面的示例中,我们创建了一个`Options`对象,并添加了一个名为`help`的选项。然后,我们使用`DefaultParser`来解析命令行参数。如果用户指定了`-h`或`--help`选项,则打印用法信息。否则,执行其他操作。

如果解析器抛出`ParseException`异常,说明用户提供的命令行参数无效,我们可以捕获该异常并打印错误消息,然后调用`printUsage()`方法打印用法信息。

这样,即使用户只想打印用法时,也不会出现必需选项的解析器异常。

全部评论: 0

    相关推荐