抛出已检查的异常类似于" IllegalArgumentException"

时间:2016-07-26 15:54:15

标签: java exception exception-handling

我有以下方法,其中" a"是从用户输入的(网络请求到我的服务)

private ReturnObject getX(InputObject a) {
  ReturnObject ret = new ReturnObject();
  String s = a.getSomething();
  if (s != null) {
    ret.setSomething(s);
    return ret;
  }

  throws new CheckedExceptionSimilarToIllegalArgumentexception();
}

我在内部调用此方法,因此我想自己处理异常。实际上,我想强制所有调用此方法的人来处理这个异常。

在我的情况下,如果抛出异常我想抓住它,告知用户他们没有在请求中设置相应的字段&结束请求。

我不想返回空值,然后检查方法是否返回null,这真的很难看。

但是,我似乎无法找到类似于IllegalArgumentException的已检查异常,我也不想创建新的异常。这似乎是一种非常常见的情况,我很惊讶我无法找到任何东西。

1 个答案:

答案 0 :(得分:0)

我建议将@NotNull添加到输入参数中。这样,当您编写代码时,诸如findbug或IntelliJ之类的工具可以警告您,而不是首先传递null值。

在这种情况下,传递null是一个编码错误,我会抛出一个错误,鼓励开发人员在传递之前检查输入。

使用已检查异常的问题是太多开发人员忽略它们。我自己是检查异常的粉丝,但它只适用于开发人员知道如何处理异常的情况。

同样,Optional的问题是很容易忽略Optional不存在而且你没有得到解释原因的消息。

在某些时候,你必须假设开发人员会接受他们正在使用API​​并修复它。