我正在一种实用方法中验证来自 Restlet URL 的一些输入(这样,如果我采取的行为发生变化,我只会将其更改一个地方,是的)。legalName 本质上将值验证为 alphaNumeric,但我可能很快会允许使用其他字符。
我试图让我的异常有意义——在这种情况下,什么异常是最好的?
public static String getProperty(Request request, String key) {
String value = request.getAttributes().get(key).toString();
// unless something is specifically text, it is a property
if(legalName(value)) return value;
throw new IllegalArgumentException(value);
}
我的想法是:
- IllegalArgumentException - 键直接导致无效结果
- IllegalStateException - 我们正在尝试使用不合格的值
- 没有例外 - 返回一个空字符串并记录违规的事实
- 没有例外 - 删除任何不受欢迎的字符,返回经过清理的字符串,并记录事实
当然,我不是第一个必须验证输入的人:-)