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还有什么好的方法可以解决我的问题呢?求大神指点!!!! 展开
语句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还有什么好的方法可以解决我的问题呢?求大神指点!!!! 展开
8个回答
展开全部
在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关键字)
展开全部
语句会抛出你自定义的异常,这种异常程序要求必须try----catch处理或者声明抛出异常,就是throwsXXException(自定义异常)你如果想要重试还是异常就终止的话,你需要声明抛出异常,也就是告诉虚拟机,运行语句1可能会抛出异常,并且在catch中的语句不加trycatch,这样你在抓到第一次异常以后,会第二次执行语句1,如果此时再次抛出异常,则直接抛给调用者,如果调用者没有对该异常进行处理,那么程序会弹出提示异常关闭.
更多追问追答
追问
你说的在第二次执行语句1的时候不try catch我想到过,但是不行啊,这样就是在整个方法中抛出异常了,那第一次执行语句1的时候还会去catch它的异常吗?
追答
就是要给整个方法抛异常啊
第一次回捕捉到,你不是用trycatch了么,第二次不捕捉,如果第二次报错,那么第二次直接抛出你自定义的异常啊,这是你要的效果吧!~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个写法,运行的效果是:尝试1,如果有异常,再次尝试1,再次异常则打印异常。
异常2是独立的语句块,与1没有什么关系的。
try{
语句1;
}catch(ExecuteException e){
try{
语句1;
}catch(ExecuteException e1){
e1.printStackTrace();
}
}
try{
语句2;
}
catch(ExecuteException e){
重试语句2; (和语句1重试一样,就不再写出来了。)
}
异常2是独立的语句块,与1没有什么关系的。
try{
语句1;
}catch(ExecuteException e){
try{
语句1;
}catch(ExecuteException e1){
e1.printStackTrace();
}
}
try{
语句2;
}
catch(ExecuteException e){
重试语句2; (和语句1重试一样,就不再写出来了。)
}
追问
是的,所以我发现我自己的错误了嘛,就是不知道要如何处理这个问题,才问问大家的意见咯~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照你的思路,在重试第二遍时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重试一样,就不再写出来了。)
}
就像这样:
try{
语句1;
}catch(ExecuteException e){
try{
语句1;
}catch(ExecuteException e1){
e1.printStackTrace();
System.exit(1);
}
}
try{
语句2;
}
catch(ExecuteException e){
重试语句2; (和语句1重试一样,就不再写出来了。)
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以增加变量,判断语句一是否执行成功,然后想不往下执行根据变量判断是否直接return
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询