Brigadier 支持命令异常,这些异常可用于结束命令,例如参数未正确解析或命令未能执行,以及更丰富的错误细节。
命令异常有以下两种类型:
CommandSyntaxException:由 Brigadier 提供,需要先有一个异常类型,然后通过 create(…) 或 createWithContext(…) 创建。不属于 RuntimeException,所以一旦抛出,必须被适当捕获,或者添加到方法签名中。
CommandException(自 1.20.3 被移除):由 Minecraft 提供,用于更少的情况。属于 RuntimeException,可以直接传入 Text 作为参数。
CommandSyntaxException 的两种类型包括动态和基本的类型,其中你可以调用 create() 以创建一个异常以抛出。这些异常也允许你指定环境,使用 createWithContext(ImmutableStringReader) 就可以,会构建出一条异常消息以指出你输入的命令中哪里出现错误。
下面是一个抛硬币的代码,用于显示使用中的异常示例。