1 写不写finally看你具体要求而定啊,从语法上说,可不写。
第二个问题看不懂,如果不写finally,怎么执行finally中的3???2 可以捕捉。B()throws MyException的含义是:B()告诉调用者,我不管心
MyException,因此可能扔出,让调用者来Catch。
第二个问题看不懂,如果不写finally,怎么执行finally中的3???2 可以捕捉。B()throws MyException的含义是:B()告诉调用者,我不管心
MyException,因此可能扔出,让调用者来Catch。
如果不写,当try{}中出现异常时catch{}下面的代码就不会执行了。
2。只要在B中没有捕捉异常,只是抛出异常。在A中是可以捕获的,
public void B() throws MyException 表示此函数将可能抛出MyExcpetion
异常,在调用此函数时要捕获此异常,或继续抛出。
——不是一定要,但推荐!是如果你没有在catch里throw Exception 或retrun 那是肯定的2.对于异常捕捉函数,如果函数阿A调用函数B,函数2里面会出现异常,但是函数B本身没有捕捉任何异常,是不是在A里面
try
{
B();
}
catch(MyException e)
{
...
}
也可以捕捉到这个异常呢?
那么何必把函数B写成public void B() throws MyException?//MyException已经定义过。
——我想你都这样提了,我就不必说了,不过MyException便于统一处理异常倒是满有用的!特别是大的系统!
catch(...)?
和c++一样?
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
和
try
{
//1
}
catch(...)
{
//2
}
//3效果有什么不一样呢?假如catch里面有return那么还一样么?
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
如果出现异常,3也是被执行的,
try
{
//1
}
catch(...)
{
//2
}
//3
如果出现异常,3是不做的。
try
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
如果出现异常,3被执行的,即使是没有catch到,也做finally,
也就是说,可能出现执行1,3,没有执行2的情况。
try
{
//1
}
catch(...)
{
//2
}
//3
如果出现没有被catch到的异常,3是不做的。
catch(...)?
和c++一样?
——什么意思啊,我不明白!麻烦你解释一下。