Java:异常捕获异常?

时间:2010-05-03 07:21:54

标签: java multithreading exception asynchronous

我在问,因为如果不是,它可能会被滥用为同步机制。我问的是Java。

4 个答案:

答案 0 :(得分:6)

我不确定你的意思是“可以被滥用为同步机制” - 这没有意义。

每个线程都有异常 - 当抛出异常时,当前线程的执行会跳转到捕获异常的位置。如果它根本没有被捕获,那么线程就会死掉。其他线程不受影响。

答案 1 :(得分:5)

JLS 11.3.2 Handling Asynchronous Exceptions

  

大多数异常由于它们发生的线程的动作而同步发生,并且在程序中指定可能导致此类异常的点。相反,异步异常是可能在程序执行的任何时刻发生的异常。

     

如果要生成高质量的机器代码,则必须正确理解异步异常的语义。

     

异常异常很少。它们仅在以下情况下发生:

     
      
  • 调用Thread或ThreadGroup类的stop方法
  •   
  • Java虚拟机中的内部错误
  •   

所以不,虽然很少见,但并非所有Exception处理都是同步的。

答案 2 :(得分:0)

不,这是同步的。

尝试使用调试器逐步执行代码,您将看到它一行一行地执行,并且如果您在catch中内部中断,则不会继续。

答案 3 :(得分:0)

执行线程期间发生异常。拥有异步catch是没有意义的,因为线程必须处理异常。在捕获并处理异常之前,它无法继续进行。如果没有捕获或抛出异常,则线程不知道它必须做什么,并且简单的死亡和程序可能/可能没有行为不端。

抛出异常然后继续而不等待捕获的线程没有意义。

要回答你的问题,所有实际目的都没有捕捉不是异步的。