前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 异常处理之 论 finally块何时候不走

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

作者头像
房上的猫
发布2018-03-14 12:56:17
6330
发布2018-03-14 12:56:17
举报
文章被收录于专栏:个人随笔个人随笔

一. exit退出异常:

代码语言:javascript
复制
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

代码语言:javascript
复制
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/

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档