caxa发生文件读写异常_异常的处理方式之二:声明异常

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:46   345   0

0d7c0062a73fa5d80325cdab47366769.png

当CheckedException产生时,不一定立刻处理它,可以再把异常throws出去。

在方法中使用try-catch-finally是由这个方法来处理异常。但是在一些情况下,当前方法并不需要处理发生的异常,而是向上传递给调用它的方法处理。

如果一个方法中可能产生某种异常,但是并不能确定如何处理这种异常,则应根据异常规范在方法的首部声明该方法可能抛出的异常。

如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,之间以逗号隔开。

1、throws异常声明

声明异常的关键字 throws 方法名的后面,用于声明该方法可能会产生一个异常。如果方法声明的是 Exception 类型的异常或者是 Checked Exception 异常,要求方法的调用处必须做处理。

(1)继续使用 throws 向上(方法的调用处)声明

(2)使用 try-catch-finally 进行处理 如果声明的是 RuntimeException 类型的异常,那么方法的调 用处可处理可不处理。

2、继承关系中的声明异常

(1)父类的方法声明了Exception类型的异常,子类在重写方法时,可以声明也可以不声明。但是如果子类重写后的方法使用super关键字调用父类的方法,那么要求必须对异常进行处理,且子类声明的异常范围不能超过父类声明的范围。

(2) 如果父类的方法没有异常,那么子类的方法如果一定会有Exception或Checked异常,要求子类必须自己 使用try-catch处理,或者给父类方法加上异常的声明。

(3) 如果子类在重写父类的方法时,产生的异常是RuntimeException异常时,那么可以不用处理。

3、throw 抛出异常对象

写在方法里,在捕获一个异常前,必须有一段代码先生成异常对象 并把它抛出。这个过程我们以手工做,也可以由JRE来实现,但是他们调用的都是throw子句。

4、经典代码

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 
public class Test {
    public static void main(String[] args) {
        try {
            readFile("joke.txt");
        } catch (FileNotFoundException e) {
            System.out.println("所需文件不存在!");
        } catch (IOException e) {
            System.out.println("文件读写错误!");
        }
    }  
    public static void readFile(String fileName) throws 
            FileNotFoundException,IOException {
        FileReader in = new FileReader(fileName);
        int tem = 0;
        try {
            tem = in.read();
            while (tem != -1) {
                System.out.print((char) tem);
                tem = in.read();
            }
        } finally {
            in.close();
        }
    }
}

尚学堂百战程序员

百战程序员_IT6000集_影响6000万学习IT的中国人【官网】

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP