Java 异常是如何传播的?

Java 异常是如何传播的?,java,exception-handling,Java,Exception Handling,我想了解java中线程级别的异常传播 我的理解是,当代码抛出异常时,如果方法没有处理该异常,那么它将存储在该线程的堆栈中,而jvm只是在没有处理异常的情况下不断从堆栈中弹出方法调用。此方法将应用于已检查和未检查的异常。如果我错了,请纠正我 通过上面的解释,我无法理解静态块中的异常是如何处理的,因为它们将在类加载期间被调用 有什么想法吗?静态块中的代码也在线程中执行(即使它确实在类初始化时被调用),因此相同的策略适用于从静态块抛出的未检查异常 请注意,如果您的代码从静态块抛出选中的异常,您将得到编

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

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

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


有什么想法吗?

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


请注意,如果您的代码从静态块抛出选中的异常,您将得到编译错误。

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

请检查此线程