4.5.2 try...catch和finally

7 篇文章 0 订阅
Java中,异常会导致程序中断,但通过try-catch结构可以捕获并处理异常,使得程序能继续执行。catch块依据异常类型进行处理,finally块确保特定代码无论是否发生异常都会执行,常用于资源释放。如果在try-catch中使用return或System.exit(0),finally仍然会执行,除非程序退出。
摘要由CSDN通过智能技术生成

java中,发生了异常会导致程序立即终止,所以无法继续向下执行了。为了解决这样的问题,Java 中提供了一种对异常进行处理的方式—异常捕获。异常捕获通常使用try...catch 语句,具体语法格式如下:

 try{
 //程序代码块
 }catch(ExceptionType(Exception 类及其子类)e){
     //对ExceptionType的处理
 }

其中,try代码块中编写可能发生异常的Java语句,catch 代码块中编写针对异常进行处理的代码。

当try代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给catch代码块。catch代码块需要一个参数指明它所能够接收的异常类型,这个参数的类型必须是Exception类或其子类。

示例如下:

 public class Try_Catch {
     public static void main(String[] args) {
         //定义Try_Catch语句用于捕获异常
         try{
             int result = divide(4,0);//调用divide()方法
             System.out.println(result);
         }catch (Exception e){   //异常处理
             System.out.println("捕获的异常信息为:" + e.getMessage());
         }
         System.out.println("程序继续向下执行...");
     }
     //通过方法实现两个整数相除
     public static int divide(int x, int y){
         int result = x/y;//定义一个变量result记录两个数相除的结果
         return result;//将结果返回
     }
 }

运行结果:

捕获的异常信息为:/ by zero

程序继续向下执行...


catch代码对异常处理完毕后,程序仍然会向下执行,而不会异常终止。

在try代码块中,发生异常语句后面的代码不会被执行,如上述代码第六行。


  • 如果希望某些语句无论怎样都要执行。则可以使用finally关键字。

以下为示例:

 public class Finally {
     public static void main(String[] args) {
         //定义Try_Catch_Finally语句用于捕获异常
         try{
             int result = divide(4,0);//调用divide()方法
             System.out.println(result);
         }catch (Exception e){   //异常处理
             System.out.println("捕获的异常信息为:" + e.getMessage());
             return;             //结束当前语句
         }finally{
             System.out.println("进入finally代码块");
         }
         System.out.println("程序继续向下执行...");
     }
     //通过方法实现两个整数相除
     public static int divide(int x, int y){
         int result = x/y;//定义一个变量result记录两个数相除的结果
         return result;//将结果返回
     }
 }

运行结果为:

捕获的异常信息为:/ by zero

进入finally代码块

catch代码块中增加了一个return语句,用于结束当前方法,此时程序第13行代码就不会执行了,而finally中的代码仍会执行,并不会被 return 语句所影响。

也就是说,不论程序是发生异常还是使用return语句结束,finally中的语句都会执行。正是由于这种特殊性,在程序设计时,经常会在try...catch后使用finally代码块来完成必须做的事情,例如释放系统资源。

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


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值