例外是如何传播的?

时间:2013-03-14 09:28:10

标签: java exception-handling

我想在线程级别了解java中的异常传播。

我的理解是,当代码抛出异常时,如果该方法没有处理该异常,那么它将存储在该线程的堆栈中,如果不处理异常,jvm将继续从堆栈中弹出方法调用。此方法将适用于已检查和未检查的异常。如果我错了,请纠正我。

通过上述解释,我无法理解静态块中的异常是如何处理的,因为它们将在类加载时调用。

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:1)

静态块中的代码也在一个线程中执行(即使它确实在类初始化时间中调用),因此相同的策略适用于从静态块抛出的未经检查的异常。

请注意,如果您的代码从静态块中抛出已检查的异常,则会出现编译错误。

答案 1 :(得分:1)

Java严格且精确地定义了一个类初始化的时刻(而不是加载,BTW!)。它总是由一些Java代码触发,因此触发类init的特定Java代码行将收到异常。没有魔法,没有特殊情况,它总是在运行时发生,就像任何其他异常一样。

相关问题