try...catch和finally

为了解决异常,Java提供了对异常进行处理的方式——异常捕获。异常捕获使用try...catch语句实现,try...catch具体语法格式如下:

上述语法格式中,在try代码块中编写可能发生异常的Java语句,在catch代码块中编写针对异常进行处理的代码。当try代码块中的程序发生了异常,系统会将异常的信息封装成一个异常对象,并将这个对象传递给catch代码块进行处理。catch代码块需要一个参数指明它所能接受的异常类型,这个参数的类型必须是Exception类或其子类。

下面通过一个案例来学习try...catch语句的使用,如文件1所示。

文件1:

在文件1中,第4~9行代码是对可能发生异常的代码用try...catch语句进行了处理。在try代码块中发生除0异常时,程序会通过catch语句捕获异常,第8行代码在catch语句中通过调用Exception对象的getMessage()方法,返回异常信息“/by zero”。catch代码块对异常处理完毕,程序仍会向下执行,而不会终止程序。

需要注意的是,在try代码块中,发生异常语句后面的代码是不会被执行的,如文件1中第6行代码的打印语句就没有执行。

文件1运行结果:

在程序中,有时候会希望有些语句无论程序是否发生异常都要执行,这时就可以在try...catch语句后加一个finally代码块。下面通过修改文件1,演示finally代码块的用法,如文件2所示。

文件2:

在文件2中,第9行代码实在catch代码块中增加了一个return语句,用于结束当前方法,这样第13行代码就不会执行了,而finally代码块中的代码仍会执行,不受return语句的影响。也就是说,不论程序是发生异常,还是使用return语句结束,finally中的语句都会执行。因此,在程序设计时,通常会使用finally代码块处理完成必须做的事,例如释放系统资源。

需要注意的是,finally中的代码块在一种情况下是不会执行的,那就是在try...catch中执行了System.exit(0)语句。System.exit(0)表示退出当前的Java虚拟机,Java虚拟机停止了,任何代码都不在执行了。

文件2运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值