当前位置: 移动技术网 > IT编程>开发语言>Java > Java 异常处理之 论 finally块何时候不走

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

2018年03月06日  | 移动技术网IT编程  | 我要评论

一. 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。其实不然;下面是执行流程:

 

 

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

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

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

三. 补充:

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

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

 

 

 

 

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

 

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

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网