异常处理的方式二:在方法的声明处,显示的抛出该异常对象的类型
格式:如:public static void method1() throws FileNotFoundException,IOException {}
当在此方法内部出现异常的时候,会抛出一个异常类的对象,抛给方法的调用者。
异常的对象可以逐层向上抛,直至main中。当然在向上抛的过程中,可以再通过try-catch-finally进行处理。
java的异常处理:抓抛模型
1.抓:异常的处理,有两种方式(①try-catch-finally②throws + 异常的类型,写在方法声明处):自动抛
2.抛:一旦执行过程中,出现异常,会抛出一个异常类的对象。(自动抛出 vs 手动抛出(throw + 异常类的对象)声明在方法的里面)
手动抛出的异常,若是RuntimeException,可以不显示的处理;若是一个Exception,必须要显示的处理
3.手动抛出异常的例子,写在方法里
抛出的异常类型,若是RuntimeException,可以不显示的处理
若是一个Exception,必须要显示的处理。
例如:throw new Exception("传入的类型有误...");
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class TestException {
public static void main(String[] args) {
try {
method2();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void method2() throws FileNotFoundException, IOException{
method1();
}
public static void method1() throws FileNotFoundException,IOException {
FileInputStream fis = new FileInputStream("hello.txt");
int b;
while ((b = fis.read()) != -1) {
System.out.println((char) b);
}
fis.close();
}
}
子类重写父类的方法,其抛出异常的类型只能是被重写方法的异常类的子类或异常类型一样。