异常处理
异常无论是否是故意的,都会在用户代码中发生。本节描述了 spring-shell
如何处理异常,并提供了如何使用它的说明和最佳实践。
许多命令行应用程序在适用时会返回一个退出代码,运行环境可以使用该代码来区分命令是否已成功执行。在 spring-shell
中,这主要与非交互模式下运行命令有关,这意味着每次只有一个命令在一个 spring-shell
实例中执行一次。请注意,退出代码始终与非交互式 shell 有关。
节总结
📄️ 异常解析
未处理的异常将冒泡到 shell 的 ResultHandlerService,然后最终由某个 ResultHandler 实例处理。可以使用 ExceptionResolver 实现链来解析异常,并且可以灵活地返回消息以写入控制台,同时包含在 CommandHandlingResult 中封装的退出代码。CommandHandlingResult 可能包含消息和/或退出代码。
📄️ 退出代码映射
退出代码的默认行为如下:
📄️ @ExceptionResolver
@ShellComponent 类可以有 @ExceptionResolver 方法来处理组件方法中的异常。这些方法适用于带有注解的方法。