比如有这样一段代码:try {
  A;
  B;
} catch (Exception e) { }
C;假如运行A的时候出现了异常,那么B还会被运行么?和异常代码无关的C会被运行么?

解决方案 »

  1.   

    B不会运行,但是catch()后面的C仍然会被运行。
    这正是 try,catch的一个妙用。有的时候可能希望在程序抛出某个异常的时候才执行某些工作,例如,初始化某些信息。
    执行完这些工作,程序没有影响继续运行。
      

  2.   

    try-catch语句执行流程:
      首先逐个从上到下执行try块中的java语句,如果没有发生异常,则执行完try块后跳过catch块(不论有多少个catch都跳过)。如果try块中某条语句存在异常,则跳到相对应的catch块中(发生什么异常,就跳到什么catch里,如果没有准确对应的,就跳到父类异常的catch中),执行完该catch块中的语句,然后跳过其它的catch块,接着往下走.总之,try-catch只能处理一个异常,这就是为什么后面通常跟finally,要有一个统一的出口。 
    比如: try{ 
    int b=23/0; 
    Thread.sleep(5000); 

    catch(ArithmeticException e){ 
    System.out.println("除零错误!"); 

    catch(InterruptedException e){ 
    System.out.println("延时错误!"); 
    } 上面这个例子就会在屏幕上显示"除零错误!"四个字,因为众所周知,任何数字不能除0,所以25/0是错的,它抛出ArithmeticException(数学异常),则直接跳进第一个catch块内,而没有进入第二个块,尽管Thread.sleep(2000);也有异常。
      

  3.   

    假如运行A的时候出现了异常,那么B还会被运行么?
    B 不运行 。 直接跳到 catch 块。和异常代码无关的C会被运行么?
    异常 与 C 无关。C 还是做它该做的事。
      

  4.   

    try { 
      A; 
      B; 
    } catch (Exception e) { } 
    C; 假如运行A的时候出现了异常,那么B还会被运行么?和异常代码无关的C会被运行么?1.B不会运行
    2.c会执行
      

  5.   

    答:
    1)B不会被运行。
    2)C不一定会运行。若A抛出的异常如:AWTError异常,则C不会被执行。只有当异常是Exception或其子类时,C才会运行
    不知道楼主的A抛出的是个什么“东西”啊?
      

  6.   

    B 不运行 。 直接跳到 catch 块。 C正常运行。