JAVA中try catch捕获异常的问题

try{语句1;}catch(ExecuteExceptione){try{语句1;}catch(ExecuteExceptione1){e1.printStackTra... try{
语句1;
}catch(ExecuteException e){
try{
语句1;
}catch(ExecuteException e1){
e1.printStackTrace();
}
}
try{
语句2;
}
catch(ExecuteException e){
重试语句2; (和语句1重试一样,就不再写出来了。)
}
我自己的做法是这样写了多个类似如上的try catch语句(但是总认为不对劲 - -。)....
ExecuteException类是自己定义的异常类,每个语句都可能报这个异常类。那么现在问题来了,我要的需求就是:如果语句1执行错误,重试语句1一次,如果重试成功,再继续语句2,如果重试还是catch异常,那么直接终止程序,后续语句都不执行了;如果;2也和1一样异常之后重试一次,成功则继续语句3,失败则终止程序...
我这样写着的话,不管语句1是否异常执行都会执行2的吧,请问try catch还有什么好的方法可以解决我的问题呢?求大神指点!!!!
展开
 我来答
兔丞飞
高粉答主

2018-12-16 · 专注娱乐 专注娱乐 专注娱乐
兔丞飞
采纳数:25 获赞数:19893

向TA提问 私信TA
展开全部

在java中添加捕获异常代码时,需要把认为可能会出现异常的代码包括在try语句块内,处理异常的代码包括在catch语句内。在程序执行时,如果try语句内的代码出现错误,try会创建异常对象并抛出,catch捕获异常对象,则catch语句块内的代码将会执行,这样就可以处理异常错误了。

void fun1()

{

throw int();//抛出错误信息

}

int main()

{

try

{

fun1();

}

catch (int &e)//捕获错误信息

{

cout << "Exception" << endl;

cout << e << endl;

return 0;

}

扩展资料

try是try..catch..finally块中用来引导第一部分的关键字,用于声明需要捕获指定语句块的异常

完整的使用方法是

try {

语句块1

} catch (<? extends Throwable> e) {

语句块2.1

} catch (<? extends Throwable> e) {

语句块2.2

} catch (<? extends Throwable> e) {

语句块2.3

...

} finally {

语句块3

}

参考资料:百度百科 - try (java关键字)

Tbag南斗
2014-10-30 · TA获得超过182个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:62.6万
展开全部
语句会抛出你自定义的异常,这种异常程序要求必须try----catch处理或者声明抛出异常,就是throwsXXException(自定义异常)你如果想要重试还是异常就终止的话,你需要声明抛出异常,也就是告诉虚拟机,运行语句1可能会抛出异常,并且在catch中的语句不加trycatch,这样你在抓到第一次异常以后,会第二次执行语句1,如果此时再次抛出异常,则直接抛给调用者,如果调用者没有对该异常进行处理,那么程序会弹出提示异常关闭.
更多追问追答
追问
你说的在第二次执行语句1的时候不try catch我想到过,但是不行啊,这样就是在整个方法中抛出异常了,那第一次执行语句1的时候还会去catch它的异常吗?
追答
就是要给整个方法抛异常啊
第一次回捕捉到,你不是用trycatch了么,第二次不捕捉,如果第二次报错,那么第二次直接抛出你自定义的异常啊,这是你要的效果吧!~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dhr2001
2014-10-30 · TA获得超过542个赞
知道小有建树答主
回答量:266
采纳率:83%
帮助的人:154万
展开全部
你这个写法,运行的效果是:尝试1,如果有异常,再次尝试1,再次异常则打印异常。
异常2是独立的语句块,与1没有什么关系的。

try{
语句1;
}catch(ExecuteException e){
try{
语句1;
}catch(ExecuteException e1){
e1.printStackTrace();
}
}

try{
语句2;
}
catch(ExecuteException e){
重试语句2; (和语句1重试一样,就不再写出来了。)
}
追问
是的,所以我发现我自己的错误了嘛,就是不知道要如何处理这个问题,才问问大家的意见咯~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mikemelon2012
2014-10-30 · TA获得超过3633个赞
知道大有可为答主
回答量:938
采纳率:87%
帮助的人:387万
展开全部
按照你的思路,在重试第二遍时catch里加上System.exit(1);不就退出了?
就像这样:
try{
语句1;
}catch(ExecuteException e){
try{
语句1;
}catch(ExecuteException e1){
e1.printStackTrace();
System.exit(1);
}
}
try{
语句2;
}
catch(ExecuteException e){
重试语句2; (和语句1重试一样,就不再写出来了。)
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
java开荒者
2014-10-30 · 超过14用户采纳过TA的回答
知道答主
回答量:118
采纳率:0%
帮助的人:28.1万
展开全部
可以增加变量,判断语句一是否执行成功,然后想不往下执行根据变量判断是否直接return
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式