Bud*_*ril 1 java exception-handling unchecked
有没有办法让开发人员用户处理代码中所有未经检查的异常,以便在处理完所有未经检查的异常之前代码不会编译?我想强迫用户处理像
iterator.next()
Run Code Online (Sandbox Code Playgroud)
不,你不能.通常,如果要强制用户处理未经检查的异常,请手动捕获它们并将它们包装在已检查的异常中
例如
Integer a;
try {
a = 1;
}
catch (NullPointerException e) {
throw new Exception(e);
}
Run Code Online (Sandbox Code Playgroud)
并且a为空,NPE将被抛出.然后将其包裹在托运中Exception.(这里的例外可能过于通用,因此您可能必须创建自己的已检查的excpetion类)
这种模式的问题在于,您必须在任何地方检查可能存在未经检查的异常的位置.这些未被声明为方法签名的一部分,因此它可能意味着在API中进行拖网.
或者你甚至可能更脏,并且有许多尝试/捕获块可以捕获Exception.异常是RuntimeException的超类,因此它会捕获未经检查的异常.
我不确定你想要做的是正确的方法.未经检查的异常通常是程序员错误,所以真正意味着被捕获.它们通常是代码中的错误.(关于未经检查/已检查异常的问题存在大量争论,你可以谷歌)