我正在验证实用程序方法中Restlet URL的某些输入(这样,如果我采取的行为发生变化,我只能将其更改为一个地方,yay)。 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异常 - 我们正在尝试使用不符合要求的值
- 也不例外 - 回报一个空字符串并记录违规行为发生的事实
- 没有例外 - 删除任何不需要的字符,返回消毒后的字符串并记录事实
当然我不是第一人,要验证:-)
通常情况下,它不会被存储,它只是用作参数。它可能仍然会以查询结束。我的想法是,如果我一进入系统就对其进行清理,我知道我会有安全的投入。 – corsiKa
看到我的更新btw – Bozho
哦,我很喜欢第一个子弹选项。这也更好,因为使用验证的其他任何事情都不必执行抛出,也就是说,如果它发生更改(如下所述并使用验证框架),它就在我更改它的地方,而不是一打。至于存储验证,我明白你的意思。在它甚至到达我的代码之前基本上拦截它。我肯定会研究这一点。谢谢! – corsiKa