java中代码发生异常后 程序会怎么执行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中代码发生异常后 程序会怎么执行?相关的知识,希望对你有一定的参考价值。

1 try块内的代码发生异常后 会不会执行finally块下面的代码?
2 如果没有try块 但代码发生异常 该方法内发生异常的代码下面的代码还会执行么?还会执行其他方法么

第一个问题 try块内的代码发生异常后 会执行catch块内的代码,然后再执行finally块内的代码
如不发生异常 try块内的代码执行完后执行 finally块内的代码
第二个问题 如果没有try块 说明是runtime异常,出现异常后出现异常的线程就中断了,异常后边的代码不在执行。
参考技术A 第一个问题:
finally是必执行项,也就是说无论try块是否发生异常,finally块里的代码一定会执行
第二个问题:
在一个方法中,如果在执行某一句代码时发生异常,那么,该代码后的语句将不会执行追问

我说的是finally块底下的代码
try
异常代码
finally

之后的代码

之后的代码会执行么

追答

finally块后的代码会执行

参考技术B finally只是在try失败后检查错误和处理错误用的,执行后到底会不会继续执行下面的代码,关键是看finally是否中止了程序,如果没有事可以继续执行。。。如果没有try,finally,或者finally就没有代码,那他会继续执行下面的,但可能会出现程序错误。。。 参考技术C 1.会的
2.不会,程序终止

java中代码执行顺序

之前面试的时候有一道题,是考java的代码执行顺序的。

在大三的时候学习java语言的时候有说,但是在实际工作中用的比较少,所以在这里重新记录复习一下。

比如下面这段代码:

class helloA{
    public helloA(){
        System.out.println("helloA");
    }

    {
        System.out.println("I‘m A");
    }

    static {
        System.out.println("Static A");
    }
}

class helloB extends helloA{
    public helloB(){
        System.out.println("helloB");
    }

    {
        System.out.println("I‘m B");
    }

    static {
        System.out.println("Static B");
    }
}

public class A {
    public static void main(String[] args) {
        new helloB();
    }
}

执行的结果是:

Static A
Static B
I‘m A
helloA
I‘m B
helloB

首先从父类开始执行了所有的static代码块,然后从父类开始,先执行代码块,然后执行构造方法(构造函数)。

以上是关于java中代码发生异常后 程序会怎么执行?的主要内容,如果未能解决你的问题,请参考以下文章

trycatchfinally 执行顺序

Java中,finally在try语句块中的return前执行还是后执行

Java中,finally在try语句块中的return前执行还是后执行

java基础题

突如其来的“中断异常”,我(Java)该如何处理?

java怎么处理异常让程序继续执行