Java异常处理

正确关闭资源的方式:

		Object src = new Object();
		Object desc = null;
		ObjectOutputStream oos = null;
		ObjectInputStream ois = null;
		try {
			oos = new ObjectOutputStream(new FileOutputStream("a.bin"));
			ois = new ObjectInputStream(new FileInputStream("a.bin"));
			oos.writeObject(src);
			oos.flush();
			desc = ois.readObject();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 1.流可能根本无法创建
			if (oos != null) {
				// 2.异常处理
				try {
					oos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			// 同上
			if (ois != null) {
				try {
					ois.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
 

 

Finally

Java程序执行try块、catch块时遇到了return语句,会导致该方法立即结束。系统在立即结束之前会寻找该异常处理流程中是否包含finally块,如果没有finally块,方法终止,返回相应返回值;如果有finally块,系统立即开始执行finally块——只有当finally块执行完成后,系统才会再次跳回来根据return语句结束方法。如果finally块里使用了return语句来导致方法结束,则finally块已经结束了该方法,系统将不会跳回去执行try块、catch块里的任何代码。

同理,try块、catch块时遇到了throw语句时,系统会先寻找finally块。

 

Catch

try块后使用catch块来捕捉多个异常时,程序应该小心多个catch块之间的顺序:捕捉父类异常的catch块都应该排在捕捉子类异常的catch块之后(简称为先处理小异常,再处理大异常),否则将出现编译错误。

 

继承得到的异常

Java语言规定,子类重写父类方法时,不能声明抛出比父类方法类型更多、范围更大的异常。也就是说,子类重写父类方法时,子类方法只能声明抛出父类方法所声明抛出的异常的子类。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值