开发者用户是否有办法处理代码中所有未经检查的异常,以便在处理完所有未经检查的异常之前代码无法编译?我想强制用户处理像
这样的异常iterator.next()
答案 0 :(得分:5)
不,你不能。通常,如果要强制用户处理未经检查的异常,请手动捕获它们并将它们包装在已检查的异常中
例如
Integer a;
try {
a = 1;
}
catch (NullPointerException e) {
throw new Exception(e);
}
和a为空,NPE将被抛出。然后将其包装在已检查的Exception
中。 (这里的例外可能过于通用,因此您可能必须创建自己的已检查的excpetion类)
此模式的问题在于您必须在任何地方检查可能存在未经检查的异常的位置。这些未被声明为方法签名的一部分,因此它可能意味着在API中进行拖网。
或者你甚至可能更脏,并且有很多try / catch块可以捕获Exception
。异常是RuntimeException的超类,因此它会捕获未经检查的异常。
我不确定你想要做的是正确的做法。未经检查的异常通常是程序员错误,所以真正意味着被捕获。它们通常是代码中的错误。 (关于未经检查/检查异常的问题存在大量争论,你可以谷歌)
答案 1 :(得分:1)
不,您不能完全强制用户处理未检查的异常,而这不是未经检查的异常的意图。对于强制处理,有已检查的例外。但是,您可以要求用户处理程序中的所有异常。
答案 2 :(得分:1)
答案 3 :(得分:0)
不,你不能强迫用户这样做,你可以非常好地问他......
答案 4 :(得分:0)
没有
编译器怎么会这样做呢?由于未检查这些异常,因此它们不会在方法签名中声明(大多数情况下),因此它如何知道需要处理哪些内容?