我有命令系统的应用程序,现在我想创建只能从命令代码使用的特殊验证器:
void handle(CommandExecutor executor, Command command, Arguments arguments) {
CommandValidator.between(arguments.getInt("value"), 0, 10, "message");
}
这里使用错误或异常似乎对我来说无效/误导,因为这里的验证只是检查客户端是否提供了可用于产生某种效果的合理参数。
它永远不需要显示堆栈跟踪,因为这不是任何类型的错误或异常
所以我想创建自己的类Problem extends Throwable
,其中fillInStackTrace
方法将更改为简单return this
。
因为命令系统不是记录/显示错误,而是捕获Problem
实例,只是向命令的执行者显示提供的消息。可能会有许多Problem
个子类型会影响验证器中提供的消息,例如添加有效的参数范围。
我可以在验证器方法中返回boolean
值,如果它返回false
则返回代码,但有时验证可能隐藏在命令代码的更深处,因为有时验证取决于其他条件。
这有多糟糕?我是否应该延长Exception
,即使它在这里似乎有误导性?
Problem
可能仅由验证程序类抛出,并且仅在命令系统中抛出。