java异常5-异常体系

时间:2022-08-29 20:20:16

java异常两大类1.Checked异常 2.Runtime异常 前者是java特有的 这个异常时必须处理的,不处理编译不能通过

Checked异常体现了java设计哲学

明确知道如何处理该异常 用try catch 捕获 catch块进行修复

不知道的话 定义该方法时声明抛出异常  这个也影响了代码的效率

Runtime异常灵活 无需声明抛出 捕获用 try catch即可

 

throws抛出异常 不知道如何处理这种类型的异常 就返回到上一级调用者处理 如果main函数也不会处理 也可以抛出异常 就给JVM处理  JVM就会打印跟踪栈信息 终止程序

throws声明抛出异常在方法签名中使用 可以声明抛出多个异常类,异常类之间用,隔开

 

public class ThrowsTest
{
 public static void main(String[] args)
  throws IOException
 {
  FileInputStream fis = new FileInputStream("a.txt");
 }
}

异常要么用try catch捕获 要么用throws抛出

 

子类重写父类的方法声明应该确保是父类异常的子类或相同 子类方法的声明抛出的异常不大于父类的

 

public class OverrideThrows
{
 public void test()throws IOException
 {
  FileInputStream fis = new FileInputStream("a.txt");
 }
}
class Sub extends OverrideThrows
{
 // 子类方法声明抛出了比父类方法更大的异常
 // 所以下面方法出错
 public void test()throws Exception
 {
 }
}