2014-08-30 29 views
0

例波纹管的程序,凡在try块defectedCode()方法被调用,那么为什么只有输出只显示C,带有“Exception in thread”主“java.lang.Error”。时抛出新的错误()被写在try块,为什么不执行catch块。它进入最后只能.Latter代码也不会执行

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"); 
    } 
} 
Exception in thread "main" java.lang.Error 

C 

at ExceptionTest.defectedCode(ExceptionTest.java:15) 

at ExceptionTest.main(ExceptionTest.java:21) 

Java Result: 1 

回答

2

因为ErrorException,所以catch块不监视它

使用throw new Exception()

5

造成这种情况的主要原因是,你扔一个错误,但你赶上例外。 如果你看一下Throwable层次结构,那么点就很清楚了。您无法捕获异常错误。因此catch块没有被输入并最终被调用。

试试这个:

try{ 
     defectedCode(); 
     System.out.println("A"); 

    }catch(Throwable e){ 

     System.out.println("B"); 

    }finally{ 

     System.out.println("C"); 
    } 

enter image description here

0

Error不是Exception

的基类Throwable的对象是Throwable
错误和异常有两种不同类型的可抛出的。然而,通常是不应该的错误被抓住,这就是为什么人们使用catch(Exception e)赶上基本上,他们应该捕获所有异常。

显然,由于Error不是Exception的子类,因此它不受catch(Exception e)的影响,所以未被捕获。 finally始终执行,无论是否抛出已经陷入与否。

0

你不应该捕获错误

一个错误“表示严重的问题,合理的应用程序不应该试图捕获的。”

了异常“表示条件合理的应用程序想要捕获的。”

谈论你的代码,你扔一个错误,捕获异常,它必须由现在他们2个离散实体

误差的RuntimeException &沿其子类是unchecked异常明显。所有其他异常类都是检查异常。

经过异常通常是那些从一个程序可以恢复&它可能是从编程这种例外恢复一个好主意。示例包括FileNotFoundException,ParseException等。程序员需要通过使用try-catch块来检查这些异常,或将其返回给调用者

另一方面,我们有未经检查的异常。这些都是那些如果一切顺利都不会发生的例外,但它们确实发生了。示例包括ArrayIndexOutOfBoundException,ClassCastException等。许多应用程序将使用try-catch或throws子句来处理RuntimeExceptions &的子类,但从语言的角度来看,它并不是必需的。请注意,从RuntimeException中恢复通常是可能的,但设计类/异常的人认为没有必要让最终程序员检查这些异常。

错误也是未经检查的例外&程序员不需要对这些做任何事情。事实上,对于错误使用try-catch子句是一个坏主意。大多数情况下,从错误中恢复是不可能的。&程序应该被允许终止。示例包括OutOfMemoryError,StackOverflowError等。

请注意,虽然错误是未经检查的异常,但我们不应该尝试处理它们,但可以在代码中处理RuntimeExceptions(也是未经检查的异常)。检查的异常应该由代码处理。

0

虽然道德上你不应该捕捉到错误,但你仍然可以捕捉到它作为Throwable Object。

相关问题