我用throw主动抛出异常,如果我的throw在if块中,程序是否就中止,跳出,而如果在try块中,程序跳出try块,继续执行外的代码

clousea 2005-01-25 02:11:19
能不能帮忙解释一下,程序遇到主动throw时,是怎么处理的
...全文
1693 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuilichen 2005-01-25
  • 打赏
  • 举报
回复
补充:
在void function()中假设
if(IIIII){}中的条件是成立的
cuilichen 2005-01-25
  • 打赏
  • 举报
回复
下面程序中
“IIIIIII....IIII”是执行的代码,
“XXXXXX.....XXXX”是不执行的代码:
void function() throws Exception{
IIIIIII;
if(IIIII){
throw new Exception("MyException");
}
XXXXXX;
XXXXX;
}
void function2() throws Exception{
IIIIIII;
try{
IIIIIII;
IIII;
IIII;//如果在这里抛出了异常
XXXXXX;
XXXXX;
} catch(Exception e){
throw new Exception("My Exception2");
}finally{
IIIIIIII;
IIIIIII;
}
XXXXXX;
XXXXX;
}
treesoft 2005-01-25
  • 打赏
  • 举报
回复
补充:如果catch之后还有finally代码段,则会在catch段之后再执行finally。 :)

他一般错误处理的不同之处在于:一般的错误处理只会跳出当前方法,而不是沿着调用堆栈一直查找。
treesoft 2005-01-25
  • 打赏
  • 举报
回复
不管你在何处throw出一个exception,后面的代码便不会执行,它会去匹配本层代码中是否有相应的catch语句来捕捉,如果有,则进入此catch块,执行其中的代码。这样这次异常算是处理完了,如果没有,则由上一层的代码处理,继续查找是否有catch语句捕捉,直到调用堆栈的最顶层(这是java中常见的方式)。

exception机制只是用于将“解决实际问题的代码”和“处理错误的代码”分开,降低它们之间的耦合性(coupling)。

一般这个机制是用于处理错误的,而非进行程序流程的控制。
NTMDQUSI 2005-01-25
  • 打赏
  • 举报
回复
一樓厲害
lilyjk2003 2005-01-25
  • 打赏
  • 举报
回复
程序遇到主动throw时,跳出该方法
GJA106 2005-01-25
  • 打赏
  • 举报
回复
如果有异常发生,程序直接跳到catch块代码执行,执行结束时如果有finally则执行finally块代码,然后把异常抛给调用者,结束在当前方法的运行。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧