我有以下方法,其中" 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的已检查异常,我也不想创建新的异常。这似乎是一种非常常见的情况,我很惊讶我无法找到任何东西。
答案 0 :(得分:0)
我建议将@NotNull
添加到输入参数中。这样,当您编写代码时,诸如findbug或IntelliJ之类的工具可以警告您,而不是首先传递null
值。
在这种情况下,传递null
是一个编码错误,我会抛出一个错误,鼓励开发人员在传递之前检查输入。
使用已检查异常的问题是太多开发人员忽略它们。我自己是检查异常的粉丝,但它只适用于开发人员知道如何处理异常的情况。
同样,Optional
的问题是很容易忽略Optional不存在而且你没有得到解释原因的消息。
在某些时候,你必须假设开发人员会接受他们正在使用API并修复它。