当前位置: 技术问答>java相关
有关异常抛出的问题。。。。>>>>>>>>>>>
来源: 互联网 发布时间:2015-06-07
本文导语: 1.try { //1 } catch() { //2 } finally { //3 } 是否有必要写finally部分?假如不写,如果catch能捕捉所有的异常,是不是也可以永远执行3? 那么catch作所有异常的方式是不是和c++的catch(...)写法一样呢? //////////////////////////////////...
1.try
{
//1
}
catch()
{
//2
}
finally
{
//3
}
是否有必要写finally部分?假如不写,如果catch能捕捉所有的异常,是不是也可以永远执行3?
那么catch作所有异常的方式是不是和c++的catch(...)写法一样呢?
//////////////////////////////////////
2.对于异常捕捉函数,如果函数阿A调用函数B,函数2里面会出现异常,但是函数B本身没有捕捉任何异常,是不是在A里面
try
{
B();
}
catch(MyException e)
{
...
}
也可以捕捉到这个异常呢?
那么何必把函数B写成public void B() throws MyException?//MyException已经定义过。
这样写的用处是什么?
感谢解答!
{
//1
}
catch()
{
//2
}
finally
{
//3
}
是否有必要写finally部分?假如不写,如果catch能捕捉所有的异常,是不是也可以永远执行3?
那么catch作所有异常的方式是不是和c++的catch(...)写法一样呢?
//////////////////////////////////////
2.对于异常捕捉函数,如果函数阿A调用函数B,函数2里面会出现异常,但是函数B本身没有捕捉任何异常,是不是在A里面
try
{
B();
}
catch(MyException e)
{
...
}
也可以捕捉到这个异常呢?
那么何必把函数B写成public void B() throws MyException?//MyException已经定义过。
这样写的用处是什么?
感谢解答!
|
1 写不写finally看你具体要求而定啊,从语法上说,可不写。
第二个问题看不懂,如果不写finally,怎么执行finally中的3???
2 可以捕捉。B()throws MyException的含义是:B()告诉调用者,我不管心
MyException,因此可能扔出,让调用者来Catch。
第二个问题看不懂,如果不写finally,怎么执行finally中的3???
2 可以捕捉。B()throws MyException的含义是:B()告诉调用者,我不管心
MyException,因此可能扔出,让调用者来Catch。
|
1.finally就是不管是否出现异常都执行finall{}中的代码??
如果不写,当try{}中出现异常时catch{}下面的代码就不会执行了。
2。只要在B中没有捕捉异常,只是抛出异常。在A中是可以捕获的,
public void B() throws MyException 表示此函数将可能抛出MyExcpetion
异常,在调用此函数时要捕获此异常,或继续抛出。
如果不写,当try{}中出现异常时catch{}下面的代码就不会执行了。
2。只要在B中没有捕捉异常,只是抛出异常。在A中是可以捕获的,
public void B() throws MyException 表示此函数将可能抛出MyExcpetion
异常,在调用此函数时要捕获此异常,或继续抛出。
|
是否有必要写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便于统一处理异常倒是满有用的!特别是大的系统!
——不是一定要,但推荐!是如果你没有在catch里throw Exception 或retrun 那是肯定的
2.对于异常捕捉函数,如果函数阿A调用函数B,函数2里面会出现异常,但是函数B本身没有捕捉任何异常,是不是在A里面
try
{
B();
}
catch(MyException e)
{
...
}
也可以捕捉到这个异常呢?
那么何必把函数B写成public void B() throws MyException?//MyException已经定义过。
——我想你都这样提了,我就不必说了,不过MyException便于统一处理异常倒是满有用的!特别是大的系统!
|
try
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
如果出现异常,3也是被执行的,
try
{
//1
}
catch(...)
{
//2
}
//3
如果出现异常,3是不做的。
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
如果出现异常,3也是被执行的,
try
{
//1
}
catch(...)
{
//2
}
//3
如果出现异常,3是不做的。
|
yuhan说得不对。
try
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
如果出现异常,3被执行的,即使是没有catch到,也做finally,
也就是说,可能出现执行1,3,没有执行2的情况。
try
{
//1
}
catch(...)
{
//2
}
//3
如果出现没有被catch到的异常,3是不做的。
try
{
//1
}
catch(...)
{
//2
}
finally
{
//3
}
如果出现异常,3被执行的,即使是没有catch到,也做finally,
也就是说,可能出现执行1,3,没有执行2的情况。
try
{
//1
}
catch(...)
{
//2
}
//3
如果出现没有被catch到的异常,3是不做的。