1 写不写finally看你具体要求而定啊,从语法上说,可不写。
第二个问题看不懂,如果不写finally,怎么执行finally中的3???2 可以捕捉。B()throws MyException的含义是:B()告诉调用者,我不管心
MyException,因此可能扔出,让调用者来Catch。

解决方案 »

  1.   

    1.finally就是不管是否出现异常都执行finall{}中的代码??
    如果不写,当try{}中出现异常时catch{}下面的代码就不会执行了。
    2。只要在B中没有捕捉异常,只是抛出异常。在A中是可以捕获的,
    public void B() throws MyException 表示此函数将可能抛出MyExcpetion
    异常,在调用此函数时要捕获此异常,或继续抛出。
      

  2.   

    是否有必要写finally部分?假如不写,如果catch能捕捉所有的异常,是不是也可以永远执行3?
    ——不是一定要,但推荐!是如果你没有在catch里throw Exception 或retrun 那是肯定的2.对于异常捕捉函数,如果函数阿A调用函数B,函数2里面会出现异常,但是函数B本身没有捕捉任何异常,是不是在A里面
    try
    {
      B();
    }
    catch(MyException e)
    {
    ...
    }
    也可以捕捉到这个异常呢?
    那么何必把函数B写成public void B() throws MyException?//MyException已经定义过。
    ——我想你都这样提了,我就不必说了,不过MyException便于统一处理异常倒是满有用的!特别是大的系统!
      

  3.   

    那么怎么不活所有的异常呢?
    catch(...)?
    和c++一样?
      

  4.   

    try
    {
    //1
    }
    catch(...)
    {
    //2
    }
    finally
    {
    //3
    }

    try
    {
    //1
    }
    catch(...)
    {
    //2
    }
    //3效果有什么不一样呢?假如catch里面有return那么还一样么?
      

  5.   

    try
    {
    //1
    }
    catch(...)
    {
    //2
    }
    finally
    {
    //3
    }
    如果出现异常,3也是被执行的,
    try
    {
    //1
    }
    catch(...)
    {
    //2
    }
    //3
    如果出现异常,3是不做的。
      

  6.   

    yuhan说得不对。
    try
    {
    //1
    }
    catch(...)
    {
    //2
    }
    finally
    {
    //3
    }
    如果出现异常,3被执行的,即使是没有catch到,也做finally,
    也就是说,可能出现执行1,3,没有执行2的情况。
    try
    {
    //1
    }
    catch(...)
    {
    //2
    }
    //3
    如果出现没有被catch到的异常,3是不做的。
      

  7.   

    那么怎么不活所有的异常呢?
    catch(...)?
    和c++一样?
    ——什么意思啊,我不明白!麻烦你解释一下。