如果方法methedA()抛出一个IOException,程序的执行结果是?
class ExceptionTest{
 public static void main(String args[]){   try{methodA();}
   catch(IOException e){
                        System.out.println("caught IOException");
                        }
   catch(Exception e){
                      System.out.println("caught Exception");
                      return;
                      }
    finally{
            System.out.println("catch one exception");
           }
}}
A caught IOException    catch one exception
B caught IOException    caught Exception
C caught Exception      catch one exception
D caught Exception      caught IOException    catch One Exception

解决方案 »

  1.   

    A
    java的异常捕捉只要走到一个catch就不会走别的catch了
    你的methedA()既然抛出了一个IOException,就会走到第一个catch block,然后到finally。
    最后要注意的是,只要执行了try不论有没有异常,不论有没有catch到,都会执行finally中的语句
      

  2.   

    A 楼上说得很全
    给你测试代码你自己debug跑跑看
    import java.io.IOException;class ExceptionTest {
    public static void main(String args[]) { try {
    methodA();
    } catch (IOException e) {
    System.out.println("caught IOException");
    } catch (Exception e) {
    System.out.println("caught Exception");
    return;
    } finally {
    System.out.println("catch one exception");
    }
    } private static void methodA() throws IOException{ throw new IOException("error");
    }
    }
      

  3.   

    Acatch(IOException e)完走finally因为被第一个catch匹配到了,不会再走catch(Exception e)
      

  4.   

    第一个catch语句那有个红叉,编译提示的错误如下:
    Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unreachable catch block for IOException. This exception is never thrown from the try statement body
    请问这是什么情况?
      

  5.   

    你这个是try里面不会抛出异常,
    methodA()这个方法需要throws IOException。你照着4楼的代码敲进去便是,人家给你写了啊。
      

  6.   

    二楼说的不太全吧,如果catch中有return,就会直接跳出,不会走finally了
      

  7.   


    我这边运行没问题。
    输出的是
    caught IOException
    catch one exception是不是兄弟没有拷贝全???
      

  8.   

    执行完第一个catch(),还会执行finally(),finally()始终会执行
      

  9.   

    抛开这个题不说,如果catch里有return,是不是还是得执行finally?
      

  10.   

    如果在catch里面有System.exit(0)的话,还会执行finally里面的return吗??