java - 何时抛出异常以及何时返回未修改的原始参数值?

标签 java exception

我正在使用 Utility 类,该类中的一个方法接受内容 ( String ) 和 id ( int ) 作为参数,转换内容并将其返回给客户端。

我正在验证输入(内容不能为空,id 必须为正),在这个阶段我不确定如果其中一些期望未得到满足该怎么办。最好返回原始的、未修改的内容 String或者抛出一个适当的异常,告诉客户端输入无效?

public String prepareContent(String content, long taskItemId) {

    if (Validator.notBlank(content) == false || Validator.isPositive(taskItemId) == false) {
        // what to do here? return content or throw an exception?
    }

    // some modification stuff....

    return content;

}

处理这些情况的最佳方法是什么?

编辑:例如 replace Apache StringUtils 库中的方法返回未修改的原始值,而不是引发异常。这样做的目的是什么?

 public static String replace(String text, String searchString, String replacement, int max) {
        if (isEmpty(text) || isEmpty(searchString) || replacement == null || max == 0) {
            return text;
        }
       // omitted...
    }

最佳答案

当一个错误的参数被传递到你的方法中时,约定是抛出一个IllegalArgumentException(这是一个RuntimeException) - 请参阅API了解详细信息 - 您也可以根据自己的喜好进行扩展。

返回未修改的内容可能不是一个好主意,因为它可能会导致处理链进一步出现错误。

但是,如果该操作允许返回的Object在引用或值上等于参数,例如当找不到替换参数时,您可能想返回该参数。

最终,您的方法的良好 javadoc 规范将克服您的实现可能导致的任何歧义。

关于java - 何时抛出异常以及何时返回未修改的原始参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151013/

相关文章:

java - 否则,如果我只在这段代码中出错,

java - 使用 Java 如何将文本放置到响应用户按键操作的 HTML 文本框中?

java - 使用 Java 桌面应用程序中的 API 更新 Dropbox(或 Drive)共享文件中的数据

python 类的自定义异常处理程序

c# - 处理源自线程的错误的标准方法

java - Bean 属性 'trustStore' 不可写或具有无效的 setter 方法。 setter 的参数类型与 getter 的返回类型是否匹配?

java - 最佳选择 - Spring XML 解析以读取某些元素

php - Laravel 5 : Handle exceptions when request wants JSON

java - 指定的目标目录不存在

python - 为什么 BeautifulSoup 会抛出这个 HTMLParseError?