Rah*_*thi 1 java exception-handling
示例下面的程序,其中在try块中调用了defectedCode()方法,那么为什么只输出只显示C带有"线程中的异常"主"java.lang.Error".
public class ExceptionTest {
public static void defectedCode(){
throw new Error();
}
public static void main(String args[]){
try{
defectedCode();
System.out.println("A");
}catch(Exception e){
System.out.println("B");
}finally{
System.out.println("C");
}
System.out.print("D");
}
}
Run Code Online (Sandbox Code Playgroud)
Exception in thread "main" java.lang.Error
C
at ExceptionTest.defectedCode(ExceptionTest.java:15)
at ExceptionTest.main(ExceptionTest.java:21)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
这样做的主要原因是你抛出一个错误,但你发现了异常.如果你看一下Throwable层次结构,那么这一点很清楚.您无法捕获异常错误.因此,不会输入catch块,最后将被调用.
试试这个:
try{
defectedCode();
System.out.println("A");
}catch(Throwable e){
System.out.println("B");
}finally{
System.out.println("C");
}
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
14527 次 |
| 最近记录: |