我有以下代码,它给了我一个编译错误。
// Program1 -- Compilation error
public class ExceptionExample {
public static void main(String[] a) {
try {
method();
} catch (ClassCastException p) {} catch (Exception e) {
System.out.println(" Exception");
}
}
public static void method() {
try {
throw new NullPointerException();
} finally {
System.out.println("Hello");
}
System.out.println("Hi");
}
}
但是在我添加了一些 catch block 之后,下面的代码就可以工作了。
// Program 2 - No Compilation error
public class ExceptionExample {
public static void main(String[] a) {
try {
method();
} catch (ClassCastException p) {
} catch (Exception e) {
System.out.println(" Exception");
}
}
public static void method() {
try {
throw new NullPointerException();
}
// Below catch block has been added
catch (ClassCastException p) {
}
finally {
System.out.println("Hello");
}
System.out.println("Hi");
}
}
///////////////////////////////////////////////////
"System.out.println("Hi");"处的代码无法访问
我想知道,添加不必要的 catch block 如何解决我的问题?
最佳答案
因为在 program1 中,编译器确信执行流程永远不会到达“System.out.println("Hi");”行因为既没有 catch block 可以尝试,也没有某些条件
抛出声明,
您还可以通过编写一些带有变量的条件来像这样抛出语句来避免此错误
int a =0;
if(a==0)
throw new NullPointerException();
在 program2 中,当然 catch block 永远不会执行,但编译器假定存在特定的 catch 供 try 处理并停止抛出错误。
关于exception - 捕获 block 避免编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34325238/