为什么我的例外没有被抓住?

时间:2013-05-21 17:03:59

标签: java

我有一个生成以下异常的代码:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at edu.createArrays(ExhaustivePCFGParser.java:2188)
    at edu.considerCreatingArrays(ExhaustivePCFGParser.java:2158)
    at edu.ExhaustivePCFGParser.parse(ExhaustivePCFGParser.java:339)
    at edu.LexicalizedParserQuery.parse(LexicalizedParserQuery.java:247)
    at edu.LexicalizedParser.apply(LexicalizedParser.java:283)
    at current.Gen.textParsen(Gen.java:162)
    at current.Gen.gen(Gen.java:90)
    at current.Foo.main(Foo.java:120)

我尝试使用以下代码捕获它:

try {
    // this is the line which cause the exception
    LinkedList<Foo> erg = Gen.gen(rev);
} catch (Exception e) {
    System.out.println("exception: out of memory");
}   

但是当我运行代码时,没有捕获异常。怎么解决这个问题?

1 个答案:

答案 0 :(得分:14)

因为那不是Exception而是Error

您可以将其视为Throwable

} catch (Throwable e) {

或具体为Error

} catch (Error e) {

但是,除了尝试以最干净的方式关闭应用程序之外,你可以用这样的错误做很多事情。

来自the javadoc

  

错误是Throwable的子类,表示严重问题   一个合理的应用程序不应该试图抓住