Java基础:try catch finally的使用

一.try catch finally 用法

try{//执行的代码,其中可能有异常,则立即跳到catch执行,否则不会执行catch里面的内容}

catch{//除非try里面执行代码发生了异常,否则这里的不会执行}

finally{//不管什么情况下都会执行,包括try catch里面使用了return,可以理解只要执行了try或者catch,则一定会执行}

package day01;

public class demo1 {
public static void aMethod(int arg) throws Exception{
	try{
		int i =10/arg;//抛出异常
	}catch(Exception e){
		throw new Exception("Exception in Method");
	}finally{
		System.out.println("1");
	}
}
	public static void main(String[] args) {
		try{
			aMethod(0);//执行aMethod方法;
			return;
		}catch(Exception e){
			System.out.println("Exception in Test");
		}finally{
			System.out.println("2");
		}

	}

}

执行顺序:

1;

Exception in Test;

2;

aMethod方法会在try中抛出异常,然后向上级汇报,当然汇报之前,会执行finally操作,因此,结果是先打印finally,然后汇报上级,上级方法main,会捕获异常。

catch里面抛出异常会被main方法再次捕获,所以main方法中的catch会被打印出来。

原因:

1.不管try是否抛出异常,即使try里面包含了return,返回之前也会执行finally操作。

2.这样有助于我们处理一些操作,比如,关闭数据库连接,不管是否发生异常,都会先关闭连接然后在做汇报上级的操作。

3.finally可以没有,也可以只有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使你在try块内使用return返回了,在返回前,finally总是要执行,这以便让你有机会能够在异常处理最后做一些清理工作。如关闭数据库连接。(finally的使用重点)

如果没有catch语句块,那么finally块就是必须的。

典型案例:

try 
{ 
    DataConnection.Open(); 
    DataCommand.ExecuteReader(); 
    ... 
    return; 
} 
finally 
{ 
    DataConnection.Close(); 
}
无论如何抛出异常,也无论从什么地方return返回,finally语句块总是会执行,有机会调用Close来关闭数据库连接,以便于释放已经产生的连接,释放资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值