美文网首页
java中异常抛出后代码还会继续执行吗

java中异常抛出后代码还会继续执行吗

作者: 差不多先生_tl | 来源:发表于2018-01-03 14:51 被阅读21次

今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢?


public void add(int index, E element){

    if(size >= elements.length) {

        throw new RuntimeException("顺序表已满,无法添加");

        //return;  //需要吗?    }

    ....

}

为了回答这个问题,我编写了几段代码测试了一下,结果如下:


//代码1

public static void test() throws Exception  {

    throw new Exception("参数越界");

    System.out.println("异常后"); //编译错误,「无法访问的语句」

}

//代码2

try{

    throw new Exception("参数越界");

}catch(Exception e) {

    e.printStackTrace();

}

System.out.println("异常后");//可以执行

//代码3

if(true) {

    throw new Exception("参数越界");

}

System.out.println("异常后"); //抛出异常,不会执行

总结:

若一段代码前有异常抛出,并且这个异常没有被捕获,这段代码将产生编译时错误「无法访问的语句」。如代码1

若一段代码前有异常抛出,并且这个异常被try...catch所捕获,若此时catch语句中没有抛出新的异常,则这段代码能够被执行,否则,同第1条。如代码2

若在一个条件语句中抛出异常,则程序能被编译,但后面的语句不会被执行。如代码3

相关文章

网友评论

      本文标题:java中异常抛出后代码还会继续执行吗

      本文链接:https://www.haomeiwen.com/subject/lxbhnxtx.html