个性化阅读
专注于IT技术分析

Java中方法重写的异常处理

如果我们谈论带有异常处理的方法重写, 则有很多规则。规则如下:如果超类方法未声明异常如果超类方法未声明异常, 则子类重写方法无法声明已检查的异常, 但可以声明未检查的异常。如果超类方法声明异常如果超类方法声明异常, 则子类重写方法可以声明相同, 子类异常或不声明异常, 但不能声明父级异常。

如果超类方法未声明异常

1)规则:如果超类方法未声明异常, 则子类重写方法无法声明已检查的异常。

import java.io.*;
class Parent{
  void msg(){System.out.println("parent");}
}

class TestExceptionChild extends Parent{
  void msg()throws IOException{
    System.out.println("TestExceptionChild");
  }
  public static void main(String args[]){
   Parent p=new TestExceptionChild();
   p.msg();
  }
}

立即测试

Output:Compile Time Error

2)规则:如果超类方法未声明异常, 则子类重写方法无法声明已检查的异常, 但可以声明未检查的异常。

import java.io.*;
class Parent{
  void msg(){System.out.println("parent");}
}

class TestExceptionChild1 extends Parent{
  void msg()throws ArithmeticException{
    System.out.println("child");
  }
  public static void main(String args[]){
   Parent p=new TestExceptionChild1();
   p.msg();
  }
}

立即测试

Output:child

如果超类方法声明异常

1)规则:如果超类方法声明异常, 则子类重写方法可以声明相同, 子类异常或无异常, 但不能声明父异常。

子类重写方法声明父异常的示例

import java.io.*;
class Parent{
  void msg()throws ArithmeticException{System.out.println("parent");}
}

class TestExceptionChild2 extends Parent{
  void msg()throws Exception{System.out.println("child");}

  public static void main(String args[]){
   Parent p=new TestExceptionChild2();
   try{
   p.msg();
   }catch(Exception e){}
  }
}

立即测试

Output:Compile Time Error

子类重写方法声明相同异常的示例

import java.io.*;
class Parent{
  void msg()throws Exception{System.out.println("parent");}
}

class TestExceptionChild3 extends Parent{
  void msg()throws Exception{System.out.println("child");}

  public static void main(String args[]){
   Parent p=new TestExceptionChild3();
   try{
   p.msg();
   }catch(Exception e){}
  }
}

立即测试

Output:child

子类重写方法声明子类异常的示例

import java.io.*;
class Parent{
  void msg()throws Exception{System.out.println("parent");}
}

class TestExceptionChild4 extends Parent{
  void msg()throws ArithmeticException{System.out.println("child");}

  public static void main(String args[]){
   Parent p=new TestExceptionChild4();
   try{
   p.msg();
   }catch(Exception e){}
  }
}

立即测试

Output:child

子类重写方法未声明异常的示例

import java.io.*;
class Parent{
  void msg()throws Exception{System.out.println("parent");}
}

class TestExceptionChild5 extends Parent{
  void msg(){System.out.println("child");}

  public static void main(String args[]){
   Parent p=new TestExceptionChild5();
   try{
   p.msg();
   }catch(Exception e){}
  }
}

立即测试

Output:child
赞(0)
未经允许不得转载:srcmini » Java中方法重写的异常处理

评论 抢沙发

评论前必须登录!