当前位置: 代码迷 >> J2SE >> 一个关于try.catch的有关问题
  详细解决方案

一个关于try.catch的有关问题

热度:31   发布时间:2016-04-23 20:35:03.0
弱弱的问一个关于try..catch的问题
我想问一下,一段程序代码是不是try..catch之后,即使捕捉到异常,依然后执行后面的,如果不捕捉异常就不执行是吗?
还有我如果用了try..catch又不想让它遇到异常继续执行应该怎么办呢
------解决方案--------------------
我想问一下,一段程序代码是不是try..catch之后,即使捕捉到异常,依然后执行后面的,如果不捕捉异常就不执行是吗?
还有我如果用了try..catch又不想让它遇到异常继续执行应该怎么办呢 

1、不是你捕捉到异常之后 后面的代码依然执行。而是你捕捉到异常之后后面的代码肯定不会执行,终止了。比如:

try {
//处理异常
int i = 0;
System.out.println(“i = ”+i);
int j = 5/i;
System.out.println("j = "+j);
} catch (Exception e) {
e.printStackTrace();
}


打印 i = 0  而不打印j = ,因为执行到5/j这一行的时候直接报异常了。后面的代码统统不执行。

2、你想让程序遇到异常后面的代码不执行,。。。。。。本来就不会执行的。你如果嫌打印异常看着烦就直接return,或者让catch里面的内容为空catch(Exception e){} 就OK了。
------解决方案--------------------
try ...catch 在中间加return 把程序结束 或者 把异常重新抛出吧 
------解决方案--------------------
引用:
我想问一下,一段程序代码是不是try..catch之后,即使捕捉到异常,依然后执行后面的,如果不捕捉异常就不执行是吗?
还有我如果用了try..catch又不想让它遇到异常继续执行应该怎么办呢 

1、不是你捕捉到异常之后 后面的代码依然执行。而是你捕捉到异常之后后面的代码肯定不会执行,终止了。比如:

try {
//处理异常
int i = 0;
System.out.println(“i = ”+i);
int j = 5/i;
System.out.println("j = "+j);
} catch (Exception e) {
e.printStackTrace();
}


打印 i = 0  而不打印j = ,因为执行到5/j这一行的时候直接报异常了。后面的代码统统不执行。

2、你想让程序遇到异常后面的代码不执行,。。。。。。本来就不会执行的。你如果嫌打印异常看着烦就直接return,或者让catch里面的内容为空catch(Exception e){} 就OK了。

我补充一点,
public class test {

public static void main(String[] args) {
try{
int a=1/0;
}catch(Exception e){
System.out.println(" Do Nothing");

}
System.out.print(1111);
}

}

try catch 中的语句会因为遇到异常而直接终止try内的语句,但并不会影响try catch 外的代码的执行。
但是如果在catch中添加return语句,那么程序就直接结束了。zgd77521说的很好,我只是做点补充。