Java开发笔记(七十五)异常的处理:扔出与捕捉

本文介绍了Java中异常处理的机制,包括运行时异常与非运行时异常的区别。重点讲解了如何使用try/catch/finally处理异常,以及自定义异常的创建和抛出。通过示例代码详细阐述了如何在遇到异常时确保资源的正确释放,以及如何合并处理多个异常。
摘要由CSDN通过智能技术生成

前面介绍的几种异常(不包含错误),编码的时候没认真看还发现不了,直到程序运行到特定的代码跑不下去了,程序员才会恍然大悟:原来这里的代码逻辑有问题。像这些在运行的时候才暴露出来的异常,又被称作“运行时异常”,与之相对的另一类异常叫做“非运行时异常”。所谓非运行时异常,指的是在编码阶段就被编译器发现这里存在潜在的风险,需要开发者关注并加以处理。比如把某个字符串转换成日期类型,用到了SimpleDateFormat实例的parse方法,倘若按照常规方式编码,则编译器会在parse这行提示代码错误,并给出如下图所示的处理建议小窗。
在这里插入图片描述
可见编译器提供了两种解决办法,第一种是“Add throws declaration”,表示要添加throws声明;第二种是“Surround with try/catch”,表示要用try/catch语句把parse行包围起来。为了消除编译错误,姑且先采用第一种解决方式,给parse行所在的方法添加“ throws ParseException”,下面是修改后的演示代码:

// 解析异常:指定日期不是真实的日子
// ParseException属于编译时异常,在编码时就要处理,否则无法编译通过。
// 处理方式有两种:一种是往外丢异常,另一种是通过try...catch...语句捕捉异常
private static void getDateFromFormat() throws ParseException {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	String strDate = "2021/02/28";
	Date date = sdf.parse(strDate);
}

然而不光是上面的getDateFromFormat方法需要添加throws声明,连该方法所在的main方法也要添加throws声明才行。好不容易把该加的throws语句全都加了,接着故意填个格式错误的日期字符串,运行这个格式转换代码,果然程序输出了异常信息“java.text.ParseException: Unparseable date: “2021/02/28””。
不过手工添加throws实在麻烦,得从调用parse的地方开始一层一层往上加过去,改动量太大。那么再试试编译器提供的第二种解决方式,也就是parse这行增加try/catch语句块,具体代码示例如下:

// 通过try...catch...语句捕捉日期的解析异常
private static void getDateWithCatch() {
	SimpleDateFormat sdf = new Si
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值