扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在Java中,抛出异常之后,如果不对异常进行处理,代码会一直往调用的上层抛,直到线程的执行器,如果在这里异常仍然未得到处理,线程将停止执行。所以抛出异常后如果不对异常进行处理,后面的代码将不会执行。
成都创新互联公司专注于江北网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供江北营销型网站建设,江北网站制作、江北网页设计、江北网站官网定制、微信小程序定制开发服务,打造江北网络公司原创品牌,更为您提供江北网站排名全网营销落地服务。
比如以下代码:
public void testException throws Exception(){
System.out.println("start");
throw new Exception("test exception");
System.out.println("execute ended?");
}最后一行代码在异常抛出之后,这行代码是不会执行的。
java中抛出异常后面的代码不会执行,测试代码如下:
public class Test {
public static void main(String[] args) {
int i = 10;
try {
// 此处会报错
int j = i / 0;
System.out.println("hello");
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果:
第一个问题 try块内的代码发生异常后 会执行catch块内的代码,然后再执行finally块内的代码
如不发生异常 try块内的代码执行完后执行 finally块内的代码
第二个问题 如果没有try块 说明是runtime异常,出现异常后出现异常的线程就中断了,异常后边的代码不在执行。
return会执行的。
try{}里面包含可能会出错的代码?如果里面出错了,他回交给catch{}处理,catch可能把这个错误给屏蔽掉(就比如说你牙疼不能吃饭,给给力来个止疼的,不影响你做其他的事情了)。。不影响你之后的代码运行。。但是如果你try{}里面有多行代码第一行,第二行,第三行,如果第二行出错了,第三行是不执行的。如果有finally{}这里里面代码是处理后事的。比如说,你try里面有操作工作流的,那么如果出错了fianlly可以用力处理,关闭工作流对象,避免浪费资源。finally{}是必须执行的,不是管是出错了,还是不出错。
如果使用了try catch 代码块,来捕获和处理异常, 那么后面的代码,可以执行
如果没有捕获处理异常, 那么后面的代码无法执行.
一般可以分成三面三种情形.
参考代码
public class Test {
public static void main(String[] args) {
//情形一: try catch finally 模块
int[] ary = {5};
try {
System.out.println("代码1");//这里会执行
int x = ary[3];//数组下标越界, 会抛出异常,跳到catch代码块里,去执行代码 .代码2无法被执行
System.out.println("代码2");//这里不会执行
}catch (Exception e) {
System.out.println("代码3");//如果捕获到了异常 ,这里的代码会执行
}finally {//finally的代码,总会执行
System.out.println("代码4");//这里会执行
}
//情形二: try finally
try {
System.out.println("代码5"); //这里会执行
int y=ary[3]; //这里还是会抛出异常, 数组下标越界.
System.out.println("代码6");//这里不会执行
}finally { //finally的代码,总会执行
System.out.println("代码7");// 这里会执行
}
//情形三: 没有try catch fianlly
int z =ary[3];//这里还是会抛出异常, 数组下标越界. 并且没有使用try catch等代码块,后面的代码无法执行
System.out.println("代码8");// 这里不会执行
}
}
拓展:
由于 ...finally代码块里面的代码总会执行, 所以, 一般释放IO资源, 释放数据库资源,等操作, 都放到finally代码块里.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流