java finally

finally语句

本节通过一个例子熟悉带finally子语句的try-catch语句,语法格式如下:

try{}
catch(ExceptionSubClass e){}
finally{}

其执行机制是:在执行try-catch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。

但需要注意以下两种特殊情况:

1.如果在try-catch语句中执行了return语句,那么finally子语句仍然会被执行。

2.try-catch语句中执行了程序退出代码,即执行Systen.exit(0);,则不执行finally子语句(当然包括其后的所有语句)。

下面的例子中模拟向货船上装载集装箱,如果货船超重,那么货船认为这是一个异常,将拒绝装载集装箱,但无论是否发生异常,货船都需要正点起航。

class DangerException extends Exception{
	final String message="超重";
	public String warnmess() {
		return message;
	}
}
class CargoBoat{
	int realContent;
	int maxContent;
	public void setMaxContent(int c) {
		maxContent=c;
	}
	public void loading(int m) throws DangerException{
		realContent+=m;
		if(realContent>maxContent) {
			realContent-=m;
			throw new DangerException();
		}
		System.out.println("目前装载了"+realContent+"吨货物");
	}
}
public class Hello {
	public static void main(String args[]) {
		CargoBoat ship=new CargoBoat();
		ship.setMaxContent(1000);
		int m=600;
		try {
			ship.loading(m);
			m=400;
			ship.loading(m);
			m=367;
			ship.loading(m);
			m=555;
			ship.loading(m);
		}
		catch(DangerException e) {
			System.out.println(e.warnmess());
			System.out.println("无法再装载重量是"+m+"吨的集装箱");
		}
		finally {
			System.out.println("货船将正点起航");
		}
	}
}

运行结果:

    目前装载了600吨货物
    目前装载了1000吨货物
    超重
    无法再装载重量是367吨的集装箱
    货船将正点起航
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值