4

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

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");
}   

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

4

1 回答 1

14

因为那不是一个,Exception而是一个Error

你可以把它当作一个Throwable

} catch (Throwable e) {

或具体为Error

} catch (Error e) {

但是对于这样的错误,除了尝试以最干净的方式关闭应用程序之外,您无能为力。

javadoc

Error 是 Throwable 的子类,表示合理的应用程序不应尝试捕获的严重问题

于 2013-05-21T17:04:54.103 回答