我有一个生成以下异常的代码:
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");
}
但是当我运行代码时,没有捕获异常。怎么解决这个问题?
答案 0 :(得分:14)
因为那不是Exception
而是Error
。
您可以将其视为Throwable
} catch (Throwable e) {
或具体为Error
} catch (Error e) {
但是,除了尝试以最干净的方式关闭应用程序之外,你可以用这样的错误做很多事情。
来自the javadoc:
错误是Throwable的子类,表示严重问题 一个合理的应用程序不应该试图抓住