我在实用程序方法中验证来自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);
}
我的想法是:
当然,我不是第一个必须验证输入的人: - )
答案 0 :(得分:2)
当存储属性而不是检索属性时,应该抛出这样的异常。检查Restlet validation。
如果您更愿意坚持自己的解决方案:
validateName(..)
并让它抛出异常。如果没有 - 返回值。javax.validation.ValidationException
看起来更好,但你可以使用你提到的两个IllegalXException
中的任何一个。只要确保他们有更详细的信息。答案 1 :(得分:1)
这似乎是无效的用户输入,所以首先我要去某种ValidationException并使用验证框架而不是自己管理它。如果不是ValidationException,那么IllegalArgumentException可能最符合你列出的选择。
答案 2 :(得分:0)
您可以使用自定义(自己的)异常类。根据情况或验证,您可以使用正确的消息抛出它。 对于Ex:1。对于非法参数异常情况处理try catch和catch中的代码块,使用正确的消息抛出自己的异常。