欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 异常处理之 论 finally块何时候不走

程序员文章站 2022-03-16 22:29:59
一. exit退出异常: 二. return返回: “如果return在异常处理机制块中 , finally块执行流程高于return;但是在带返回值的方法中,return返回的是当前位置的值,不受finally块影响” 详细解释 请查阅:http://www.cnblogs.com/lsy1314 ......

一. exit退出异常:

import java.util.Scanner;


public class Test3exit {

    /**
     * @param 房山的猫
     * finally什么时候不走
     * alt+shift+z
     */
    public static void main(String[] args) {
        try {
            Scanner input=new Scanner(System.in);
            System.out.print("请输入第一个整数:");
            int num1=input.nextInt();//1)输入不是整数类型  2)除法 输入 0
            System.out.print("请输入第二个整数:");
            int num2=input.nextInt();
            int jg=num1/num2;//输入num2可能输入  0
            System.out.println(jg);
        } catch (Exception e) {
            System.out.println("出现异常");
           System.exit(1);//退出java的虚拟机
            e.printStackTrace();
        }finally{
            System.out.println("finally语句");
        }

    }

}

 

二. return返回:

如果return在异常处理机制块中finally块执行流程高于return;但是在带返回值的方法中,return返回的是当前位置的值,不受finally块影响

 详细解释 请查阅:http://www.cnblogs.com/lsy131479/p/8513577.html

import java.util.Scanner;


public class Test4return {

    /**
     * @param 房上的猫
     * finally什么时候不走
     * alt+shift+z
     */
    public static void main(String[] args) {
        try {
            Scanner input=new Scanner(System.in);
            System.out.print("请输入第一个整数:");
            int num1=input.nextInt();//1)输入不是整数类型  2)除法 输入 0
            System.out.print("请输入第二个整数:");
            int num2=input.nextInt();
            int jg=num1/num2;//输入num2可能输入  0
            System.out.println(jg);
        } catch (Exception e) {
            System.out.println("出现异常");
            return;//程序返回
            
        }finally{
            System.out.println("finally语句");
        }

    }

}

  

       很多人以为,此程序会return反回 不会走finally。其实不然;下面是执行流程:

 

Java 异常处理之 论 finally块何时候不走

 

----------------------------------------------------------------------------

| 总结:System.exit();//退出java的虚拟机 是finally块唯一不执行的情况  |

----------------------------------------------------------------------------

三. 补充:

正常退出应该用return 0;0表示没有错误
异常退出应用exit,其中的返回值是交给编译器做其他相关对应操作

在main()函数里,exit与return完全一样。但在其他函数里一个是把控制权交给编译器退出程序,一个则是返回到main函数调用位置

 

 

 

 

(C) 房上的猫 。 保留所有权利。
 https://www.cnblogs.com/lsy131479/

 

如需转载,请注明出处!!!