java - 这里哪个异常(exception)最合适?

标签 java restlet sanitization

我正在实用程序方法中验证来自 ReSTLet URL 的一些输入(这样,如果我采取的行为发生变化,我只更改一个地方,是的)。 legalName 本质上验证该值为字母数字,但我可能很快就会允许使用其他字符。

我尝试让我的异常有意义 - 在这种情况下什么异常是最好的?

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 - key 直接导致无效结果
  • IllegalStateException - 我们正在尝试使用不合格的值
  • 也不异常(exception) - 返回一个空字符串并记录发生违规的事实
  • 也不异常(exception) - 删除任何不需要的字符,返回经过清理的字符串,并记录事实

当然,我不是第一个必须先验证输入的人:-)

最佳答案

存储属性时应抛出此类异常,而不是检索属性。检查Restlet validation为此。

如果您希望坚持自己的解决方案:

  • 将该方法重命名为 validateName(..) 并让它抛出异常。如果没有 - 返回该值。
  • javax.validation.ValidationException 看起来是更好的选择,但您可以使用您提到的两个 IllegalXException 中的任何一个。只要确保他们有更详细的消息即可。

关于java - 这里哪个异常(exception)最合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6724976/

相关文章:

java - 如何将字符串值拆分为字符串数组?

java - 使用 reSTLet 进行异步 Android GAE 通信

java.lang.IllegalStateException : Could not execute method of the activity

java - 从字节数组创建对象(使用构造函数)

java - 具有条目驱逐的并发阻塞映射

java - 为什么 SAXParser 不喜欢根元素中的 namespace ?

javascript - 如何通过串联使用 createTextNode()

java - 在 RESTLet DAO Client Server Architecture In Java 中配置回退数据源

java - Java 中清理 HTML Id 属性的函数

aem - 使用 AEM 净化输入