异常的处理方式之一:捕获异常

异常的处理方式之一:捕获异常 

  • try:

try语句指定了一段代码,该段代码就是异常捕获并处理的范围。在执行过程中,当任意一条语句产生异常时,就会跳过该条语句中后面的代码。代码中可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理。

一个try语句必须带有至少一个catch语句块或一个finally语句块。

注意事项

  • 当异常处理的代码执行结束以后,不会回到try语句去执行尚未执行的代码。
  • catch:
  1. 每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。

  2. catch捕获异常时的捕获顺序:

    如果异常类之间有继承关系,先捕获子类异常再捕获父类异常。

  • finally:
  1. 不管是否发生了异常,都必须要执行。
  2. 通常在finally中关闭已打开的资源,比如:关闭文件流、释放数据库连接等。

try-catch-finally语句块的执行过程详细分析:

程序首先执行可能发生异常的try语句块。如果try语句没有出现异常则执行完后跳至finally语句块执行;如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。catch语句块可以有多个,分别捕获不同类型的异常。catch语句块执行完后程序会继续执行finally语句块。finally语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。

【示例】异常处理的典型代码(捕获异常)


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Field;


/**
 * 测试CheckException(已检查异常,编译器报错)
 * try 尝试  把可能碰异常的代码包裹起来然后提示有几种
 * catch 捕获
 * finally  最终 他的代码是必须要执行的
 */
public class Test02 {
    public static void main(String[] args) {

        FileReader reader = null;//这是一个空指针对象。把对象的声明丢外面来。
        try {
            //把文件地址赋给reader对象
             reader = new FileReader("d:/a.twxt");
            //reader对象通过调用父类的读read()方法来读取文件
            char c = (char)reader.read();//将读取的文件强转成字符类型
            char c2 = (char)reader.read();
            char c3 = (char)reader.read();
            System.out.println(""+c+c2+c3);//打印读取的内容
            //自动生成catch语句:找不到文件异常
        } catch (FileNotFoundException e) {
            e.printStackTrace();//打印堆栈跟踪
            //又自动生成了IO异常
        } catch (IOException e) {
            e.printStackTrace();
        }finally {//一个try语句只能跟一个finally语句,finally也是必须要执行的语句
            System.out.println("Test02.main");//这里只是演示一下finally是肯定会执行的
            try {
                if (reader!=null) {
                    reader.close();//关闭文件夹
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值