OutOfMemoryError和Exception之间的优先级

时间:2017-02-13 08:43:04

标签: java android exception error-handling

我想问一下首先调用哪个catch块,如果声明类似

try {
  ...some statement...
} catch (Exception ex) {
  System.out.println("out of memory exception");
} catch (OutOfMemoryError error) {
  System.out.println("out of memory error");
}

此处语句导致OutOfMemoryError。 我查了Order of catching exceptions in Java

这是不同的,如果代码无缝运行,您无法预测会出现RunTimeException

2 个答案:

答案 0 :(得分:4)

请记住对象层次结构:

  • java.lang.Throwable中
    • java.lang.Exception的
    • java.lang.Error的

如果出现问题,可能是错误或异常。这里没有第一个,因为这些类是兄弟姐妹,而不是父母/孩子。

答案 1 :(得分:0)

java.lang.Exception和java.lang.Error(OutOfMemory是一个错误)与其公共父Throwable的每个其他异常无关。所以这里没有第一个或第二个。

OutffMemory发生在你的jvm死亡(堆满了)时很少见,所以只需在其中进行清理工作。