关于try catch finally 三者之间的关系(JDK 1.8)

话不多说 线上代码

package System;

import java.util.Scanner;
/**
 * 
 * @author chris
 *
 */
public class TryCathfianly {
   final static int i =100;
	public static void main(String[] args) {
		System.out.println("请输入被除数!");
		Scanner in= new Scanner(System.in);
		int b;
		int c = 0;
		b = in.nextInt();
		try {
		    c = i/b;
			System.out.println("我是try   "+c);
		} catch (Exception e) {
//			c++;
			System.out.println("我是catch   "+ ++c);
		}finally {
//			c++;
			System.out.println("我是finally   "+ ++c);
		}
	}
}

  很多时候 我们的try去扑获 异常时 会用到finally   显然我们都知道 finally是会必定运行的 那么 到底怎么个运行情况呢 我们开始

情况一 输入的被除数 非0 也就是无异常情况  结果如下

 

情况二 输入的被除数为 0 此刻也就是异常情况 结果如下

 

 

结论很简单 ! 当try中有异常的情况下 不会执行catch  并且 finally都是最后执行的(且必定执行)

在这里 有人会说 如果给 try 和 catch 加上 return 是否不会执行 finally呢 !!! 那么好的 笔者上代码

package System;

import java.util.Scanner;
/**
 * 
 * @author chris
 *
 */
public class TryCathfianly {
   final static int i =100;
	public static void main(String[] args) {
		System.out.println("请输入被除数!");
		Scanner in= new Scanner(System.in);
		int b;
		int c = 0;
		b = in.nextInt();
		try {
		    c = i/b;
			System.out.println("我是try   "+c);
			return;
		} catch (Exception e) {
//			c++;
			System.out.println("我是catch   "+ ++c);
			return;
		}finally {
//			c++;
			System.out.println("我是finally   "+ ++c);
		}
	}
}

  很遗憾的 是 结果是一样的!!!!!!!!!!!!所以 结论成立! 谢谢 实习时间发一个博客玩玩 很多你认为不在乎的细节 了解的东西 其实往往很重要

  ---------------------------------------------------------------------------更新如下----------------------------------------------------------------------------------------

  有同学问我,那我说的finally必定会执行是错了! 那么我就和大家说一下finally何时不会执行!!!!!

  第一种情况: 当你还未执行 try的时候,你就已经return结束了当前方法,那肯定不会执行后面的finally,这肯定是正确的,不然会与return的语法冲突。

  第二种情况: 这种情况呢,很冲突啊,就是直接关掉你的JVM虚拟机,此时你拿什么执行呢?  你只需要在 try代码块中加入 System.exit(0);  

  对了   有人说 那么finally是在  return之前执行还是在return之后执行呢   在这里我就不多说了 我放一个链接吧  https://blog.csdn.net/zoujian1993/article/details/45362931

  结论!!!!!

      到底返回值变不变可以简单的这么记忆:当finally调用的任何可变API,会修改返回值;当finally调用任何的不可变API,对返回值没有影响。

      其实return与finally并没有明显的谁强谁弱。在执行时,是return语句先把返回值写入但内存中,然后停下来等待finally语句块执行完,return再执行后面的一段。

       ------------------------------以上呢就是我的补充 希望大家新的一年开开心心------------------------------------

转载于:https://www.cnblogs.com/shundong106/p/10190680.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值