2024.2.10

在java处理异常中,finally语句块一定会执行的吗?

package dada;

public class SystemExitAndFinally {


    public static void main(String[] args)
    {

        try{


            System.out.println("in main");

            throw new Exception("Exception is thrown in main");

            //System.exit(0);


        }

        catch(Exception e)

        {

            System.out.println(e.getMessage());

            System.exit(0);

        }

        finally

        {

            System.out.println("in finally");

        }

    }


}

在这段代码中,无论异常是否被捕获,finally 语句块一定会执行。以下是对代码执行过程的解读:

1. 进入 try 块
 输出 "in main"
抛出异常 `Exception("Exception is thrown in main")`

2. 进入 catch 块
捕获到异常,并输出异常信息 "Exception is thrown in main"
调用 `System.exit(0)` 终止程序

由于在 catch 块中调用了 `System.exit(0)`,程序会在此处终止执行,不再执行后续代码。

无论在 catch 块中调用了 `System.exit(0)` 还是在 try 块中抛出了异常,finally 块中的代码始终会被执行。因此,在这段代码中,无论异常是否被捕获,最后一行的代码 `System.out.println("in finally");` 都会执行。

 

posted @ 2023-10-19 22:10  kuku睡  阅读(8)  评论(0编辑  收藏  举报