====== Исключения ====== **Примечание:** статья в разработке. Brigadier поддерживает исключения команд, которые могут быть использованы для завершения команды, например, если аргумент не был проанализирован должным образом или команда не была выполнена, а также включает более подробную информацию о сбое. Все исключения из Brigadier основаны на ''CommandSyntaxException''. Два основных типа исключений, предоставляемых Brigadier, - это динамические и простые типы исключений, из которых вы должны создать (''create()'') исключение, чтобы вызвать его. Эти исключения также позволяют вам указать контекст, в котором было вызвано исключение, используя ''createWithContext(ImmutableStringReader)'', который создает сообщение об ошибке, указывающее, где во введенной командной строке произошла ошибка. Ниже приведена команда подбрасывания монеты, чтобы показать пример используемых исключений: dispatcher.register(CommandManager.literal("coinflip") .executes(ctx -> { Random random = new Random(); if(random.nextBoolean()) { // Если выпал орёл ctx.getSource().sendMessage(new TranslatableText("coin.flip.heads")) return Command.SINGLE_SUCCESS; } throw new SimpleCommandExceptionType(new TranslatableText("coin.flip.tails")).create(); // Решка - ты проиграл. })); Хотя вы не ограничены только одним типом исключения, поскольку Brigadier также предоставляет динамические исключения, которые принимают дополнительные параметры для контекста: DynamicCommandExceptionType used_name = new DynamicCommandExceptionType(name -> { return new LiteralText("Имя: " + (String) name + " было использовано"); }); Существует больше динамических типов исключений, каждый из которых учитывает разное количество аргументов (''Dynamic2CommandExceptionType'', ''Dynamic3CommandExceptionType'', ''Dynamic4CommandExceptionType'', ''DynamicNCommandExceptionType''). Вы должны помнить, что динамические исключения принимают объект в качестве аргумента, поэтому вам, возможно, придется привести аргумент для вашего использования.