75_异常机制_声明异常throw_方法重写中异常的处理_手动抛出异常

来源:互联网 发布:4399盗号软件 编辑:程序博客网 时间:2024/05/19 11:34

异常的处理办法之二,声明异常:throws子句

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

  • 在方法中使用try-chatch-finally由这个方法处理异常。在一些情况下,当前方法并不需要处理发生的异常,而是向上传递给调用它的方法处理。
  • 如果一个方法中可能产生某种异常,但是并不能确定如何处理这种异常,则应根据异常规范在方法的首部声明该方法可能抛出的异常。
  • 如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,之间以逗号隔开。
import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class FileTest {    public static void main(String[] args) {        try{            readFile("d:/a.txt");        }catch (FileNotFoundException e){            System.out.println("所需要的文件不存在!");            e.printStackTrace();        }catch (IOException e) {            System.out.println("文件读写出错误!");            e.printStackTrace();        }    }    public static void readFile(String fileName) throws IOException {        FileReader in = new FileReader(fileName);        try {            int tem = 0;            tem = in.read();            while (tem != -1) {                System.out.println((char) tem);                tem = in.read();            }        } finally {            in.close();        }    }}
  • 方法重写中声明异常原则
    子类声明的异常范围不能超过父类声明的范围。包含如下意思:
    1. 父类没有声明异常,子类也不能;
    2. 不可抛出原有方法抛出异常类的父类或上层类
    3. 抛出的异常类型的数目不可以比原有的方法抛出的还多(不是指个数)
import java.io.FileNotFoundException;import java.io.IOException;import java.text.ParseException;public class TestException1 {    public static void main(String[] args) {    }}class A {    public void method() throws IOException, ParseException {    }}class B extends A {    public void method() throws FileNotFoundException {    }}class C extends A {    public void method() {    }}class D extends A {    public void method() throws IOException {    }}class E extends A {    public void method() throws IOException, FileNotFoundException {    }}class F extends A {    public void method() throws IOException, ArithmeticException {    }}class G extends A {    public void method() throws IOException, ParseException {    }}

异常的处理办法之三,手动抛出异常,throw子句

  • Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要手工创建并抛出。
  • 在捕获一个异常前,必须有一段代码先生成异常对象并把它抛出。这个过程我们可以手工做,也可以由JRE来实现,但是他们调用的都是throw子句。
  • 对于一个已经存在的异常类,抛出该类异常对象过程如下:
    1. 找到一个合适的异常类。
    2. 创建一个该类的对象。
    3. 将对象抛出
File f = new File("c:/tt.txt");if (!f.exists())  {    try {    throw new FileNotFoundException("File can't be found!");    } catch (FileNotFoundException e) {    e.printStackTrace();    }}
原创粉丝点击