【发布时间】:2017-07-01 04:31:55
【问题描述】:
我想问一下哪个catch块会先被调用,以防类似
的语句try {
...some statement...
} catch (Exception ex) {
System.out.println("out of memory exception");
} catch (OutOfMemoryError error) {
System.out.println("out of memory error");
}
here 语句导致OutOfMemoryError。
我已经检查了Order of catching exceptions in Java
这是不同的,如果代码无缝运行,您无法预测会出现RunTimeException。
【问题讨论】:
-
异常和错误是正交的(它们有一个共同的超类型,但一个不是另一个的超类型)。抛出异常则捕获异常,抛出错误则捕获错误。
-
如果内存不足,OutOfMemoryError catch 块将在应用程序崩溃时执行
-
@EJP 你的重复只关注异常,这个问题略有不同(异常与错误)。 (是的,它可能在其他地方仍然是重复的;)但不是这个)
-
@JeroenvanDijk-Jun 无论您选择哪一对
Throwables,问题都是完全相同的。如果有继承关系,编译器会强制执行,否则没有问题解决。 -
@EJP 好吧......是的......但是......对于可抛出的兄弟姐妹来说,答案并不是那么清晰,而仅适用于异常兄弟姐妹。经验不足的人可能会发现这对于理解异常与错误很有用。
标签: java android exception error-handling