社区
Java SE
帖子详情
我用throw主动抛出异常,如果我的throw在if块中,程序是否就中止,跳出,而如果在try块中,程序跳出try块,继续执行外的代码
clousea
2005-01-25 02:11:19
能不能帮忙解释一下,程序遇到主动throw时,是怎么处理的
...全文
1693
7
打赏
收藏
我用throw主动抛出异常,如果我的throw在if块中,程序是否就中止,跳出,而如果在try块中,程序跳出try块,继续执行外的代码
能不能帮忙解释一下,程序遇到主动throw时,是怎么处理的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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块代码,然后把异常抛给调用者,结束在当前方法的运行。
Java异常原理剖析
本门课程主要包括:异常概述、异常的继承体系、编译期异常Exception、运行时异常RuntimeException、异常的处理方案、自定义异常的实现、
throw
和
throw
s关键字的用法、
try
...catch.finally异常处理讲解、及异常相关...
Try
中
如果发现错误,即
跳出
try
去匹配catch,那么
try
后面的语句就不会被执行
这意味着如果在
try
块
中
有一个函数调用或其他的
代码
,这些
代码
的执行结果如果在
try
块
结束时没有任何异常被抛出,那么这些
代码
的结果就会被执行。
块
的
代码
总是会被执行,所以会打印出"这是在
try
/except之后的
代码
”。
Java
中
throw
s..
throw
的使用与说明
虽然RuntimeException的异常可以不使用
try
...catch进行处理,但是如果一旦发生异常,则肯定会导致
程序
中
断执行,所以,为了保证
程序
再出错后依然可以执行,在开发
代码
时最好使用
try
...catch的异常处理机制进行处理。...
异常捕获抛出,循环
中
捕获抛出,
程序
和循环
是否
继续运行?
异常之后
程序
的运行情况,在循环
中
,不同的处理异常方式,
程序
是结束?继续?循环是继续?还是跳过?
实现js
中
的forEach方法
中
:
中
途
跳出
循环和
throw
new Error()
在forEach
中
使用会报错;因为forEach是一个函数当Error像一个函数一样被使用时,也就是没有new,它将返回一个Error对象。因此,仅仅调用Error将产生与通过new关键字构造一个Error对象相同的输出。 通过Error的构造...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章