java捕获到异常后,异常后的语句不会被执行

其中一段:
if(a>10)
throw new MyException(a);
System.out.println("这是正常退出");
请问如果给出的a>10,抛出了异常后,是不是后面这句System.out.println("这是正常退出");就不会执行了呢?

如果异常中没有finally,那么直接抛出异常,因为抛出异常后实际上就会有“return”结束后面代码的执行。

如果异常中有finally,那么finally里面的内容是可以被继续执行的,执行完之后才会返回。

但最终结果是try大括号后面的内容肯定不会被执行。

举例:

public class Test {


public static void main(String args[]) {

OutputStream os = null;

try {

os = new FileOutputStream(new File(""));

} catch (IOException e) {

System.out.println("被执行1");

} catch (Exception e) {

System.out.println("被执行2");

} finally {// 此处不管是否有异常,都会被执行

System.out.println("被执行3");

if (os != null) {

try {

os.close();

} catch (Exception e) {

}

}

}

}

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-24
抛出异常后程序执行会终止,然后runtime会从call stack里寻找异常处理程序,进入异常处理的流程,所以之后的正常代码是执行不到的。
参考 http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html本回答被提问者和网友采纳
第2个回答  2014-10-29
问题有歧义你好 需要你的全部代码,如果你想让System.out.println("这是正常退出");执行的话如下

if(a>10){
System.out.println("这是正常退出");
throw new MyException(a);

}
第3个回答  2014-10-29
  异常后面的任何语句都执行不到,程序只要有异常就会直接终止运行,后面的所有代码都不会执行
第4个回答  2014-10-29
异常发生,要不被trycatch捕获,要不就就立即throw出去,后面的不会执行。

java捕获到异常后,异常后的语句不会被执行
如果异常中有finally,那么finally里面的内容是可以被继续执行的,执行完之后才会返回。但最终结果是try大括号后面的内容肯定不会被执行。举例:public class Test { public static void main(String args[]) { OutputStream os = null;try { os = new FileOutputStream(new File(""));} catch (IO...

java 抛出异常后,还会执行后面代码吗?
return会执行的。try{}里面包含可能会出错的代码?如果里面出错了,他回交给catch{}处理,catch可能把这个错误给屏蔽掉(就比如说你牙疼不能吃饭,给给力来个止疼的,不影响你做其他的事情了)。。不影响你之后的代码运行。。但是如果你try{}里面有多行代码第一行,第二行,第三行,如果第二行出错...

java抛出异常后程序还会不会往下执行?
若添加try catch语句则程序会处理异常,try内异常不再执行,处理后继续向下运行 若没有try catch语句 程序会在异常处跳出来,不再运行下面部分

java 异常处理后程序为什么不继续执行?
java 异常处理后程序不继续执行,可能原因:设置的有断点。异常处理之后 ,程序就执行完了,有些异常处理 完, 后面的程序有些程序 就不执行了。解决办法:1. 找到你设置的断点, 把它去掉。2. 是正常的, 你写的程序刚好 执行完, 所以 后面就不再执行。3. 去看相关异常处理的机制, 修改自己的...

java中异常抛出后代码还会继续执行吗
如果使用了try catch 代码块,来捕获和处理异常, 那么后面的代码,可以执行 如果没有捕获处理异常, 那么后面的代码无法执行.一般可以分成三面三种情形.参考代码 public class Test {public static void main(String[] args) {\/\/情形一: try catch finally 模块int[] ary = {5};try {System.out....

如何区分异常发生后程序是否继续执行
第一个因为正常捕获到了异常,并进行了处理,所以程序不会中断 第二个你捕获的异常类型不对,你直接捕获Exception类型的异常就不会中断了 因为发生的是java.lang.ArrayIndexOutOfBoundsException数组脚标越界异常,而你用ArithmeticException 异常是捕获不到的 ...

java中异常处理时为什么可以只要try-finally,而可以不要catch啊。_百 ...
②当try捕获到异常,catch语句块里没有处理此异常:这种情况下,该异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行。③当try捕获到异常,catch语句块里有处理此异常:在try语句块中是按照顺序来执行的,当执行到某一条语句出现异常时,程序将跳到catch语句块...

java中异常抛出后代码还会继续执行吗
通过try-catch捕捉异常,即异常代码在try中,可以在catch中进行异常处理 try{ ... \/\/代码,产生异常}catch(Exception e){\/\/e是异常类型,一般根父类为Exception类 ... \/\/进行产生异常后的处理}finally{ ... \/\/无论如何都会执行的代码}...\/\/如果catch中没有继续throw异常以及...

java中 try-catch一个catch满足了.剩下的catch是否执行
发生异常的时候,java会一个个向下catch,直到有一个catch能捕获异常,再下面的catch就不执行了。但是上面catch的范围一定要比下面catch的范围少,否则下面的catch就不会捕获得到了,也编译不过。

Java中如果不抛出异常,catch代码段是否被执行? 而且catch方法后面的参数...
不抛异常,代码里有捕获异常,当捕获异常的代码块出现异常的时候catch代码自然执行,不发生异常则不执行。有捕获异常的话,catch后的代码会正常执行,有异常却没记录,可能是你捕获了异常却没打印出来也没记录日志自然会看不到

相似回答