Одним из изменений в picocli 4.x является новый исполняемый фреймворк . В руководстве пользователя есть раздел по миграции , который может быть полезен.
В принципе метод CommandLine::execute
никогда не вызывает исключение. Поэтому нет необходимости окружать вызов CommandLine::execute
блоком try/catch
(если только вам не нужно перехватывать Error
или Throwable
).
Вместо этого вы можете по желанию указать пользовательские обработчики исключений Как вы уже сделали в своем примере. В этих обработчиках исключений вы можете показывать пользователям сообщение об ошибке. (Возможно, сочетание того, что было в предыдущем ExceptionHandler, и логики c, которая ранее была в блоке catch
.)
ParameterExceptionHandler
вызывается, когда пользователь предоставил неверный ввод. Обработчик по умолчанию показывает сообщение об ошибке, может предлагать альтернативные варианты написания опций или подкоманд, которые выглядят как опечатка, и, наконец, отображает сообщение об использовании. В разделе Обработка ошибок в руководстве пользователя приведен пример ShortErrorMessageHandler
, который может быть полезен, когда сообщение справки об использовании настолько длинное, что скрывает сообщение об ошибке.
ExecutionExceptionHandler
вызывается, когда бизнес-логика c выдает исключение. Обработчик по умолчанию просто сбрасывает исключение, что приводит к печати трассировки стека. В разделе Business Logi c Exceptions в руководстве пользователя представлен альтернативный вариант.
Похоже, вам нужен пользовательский ExecutionExceptionHandler
, который печатает трассировку стека с последующим сообщением помощи использования.