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

一. 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/

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

SpringBoot ( 四 ) :thymeleaf 使用详解

简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸...

1073
来自专栏GreenLeaves

jQuery多库共存问题解决方法

一、问题概述: 1、随着jQuery的流行,采用jQuery和$符为命名空间的js库越来越多,当然jQuery的$符也是参照的Prototype库的,所以当多个...

1846
来自专栏Golang语言社区

Go语言核心之美 -JSON

JSON(JavaScript Object Notation)是一种发送和接收结构化信息的标准化表示法。类似的标准化协议还有XML、ASN.1、Protobu...

3366
来自专栏Java开发

Velocity模版进行shiro验证

804
来自专栏Script Boy (CN-SIMO)

几个整数求和

任务描述 在eclipse中通过配置运行参数,编写程序求这些整数参数之和然后输出参数个数与所求之和。 设计思想 获取的参数是String类型的,通过Intege...

1880
来自专栏待你如初见

JavaIO流输入输出流-字节流

FileInputStream fis = new FileInputStream(fileName);

721
来自专栏java初学

java中 i = i++和 j = i++ 的区别

36210
来自专栏刘君君

Validator 使用总结

1856
来自专栏Spark生态圈

[Spark SQL] 源码解析之Parser

Parser就是将SQL字符串切分成一个个Token,再根据一定语义规则解析为一棵语法树。我们写的sql语句只是一个字符串而已,首先需要将其通过词法解析和语法解...

812
来自专栏PHP技术

深入浅析PHP7.0新特征(五大新特征)

截止到目前为止,PHP官方已经发布了php7的RC5版本,预计在11月份左右会发布第一个正式版本!现在来说php7的重大特性肯定已经是定型了,不会再有什么变动了...

27811

扫描关注云+社区