Java异常处理try...catch和finally

163 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、Java中异常处理——try...catch

为了解决由于发生了异常,程序立即终止,无法继续向下执行的问题,Java中提供了一种对异常进行处理的方式——异常捕获

异常捕获语法格式:

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

关于try...catch

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

案例:

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

注意:在try代码块中,发生异常语句后面的代码是不会执行的。

二、Java异常处理——finally

希望无论程序是否发生异常都要执行,可以在try...catch语句后,加一个finally代码块。

案例:

//异常 finally(总结)
public class Abnormal03 {
    public static void main(String[] args) {
        //下面的代码定义了一个 try...catch语句用于捕获异常
        try{
            int result=divide(4,0); //调用方法
            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;  //将结果返回
    }
}

在程序设计中,经常会在try...catch后使用finally代码块来完成必须做的事情,例如释放系统资源。

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