class ExceptionDemo{ public static void main(String[] args) { Person p = new Person(); Student s = new Student(); try{ s.setAge(4); //p.setAge(-1); }catch(InvalidAgeException e){//① System.out.PRintln(e.getMessage()); }catch(AgeTooSmallException e){//② System.out.println(e.getMessage()); }catch(AgeTooBigException e){// System.out.println(e.getMessage()); } }}class Person { private int age; public int getAge(){ return this.age; } public void setAge(int age) throws AgeTooSmallException/*,AgeTooBigException*/{ if(age < 0){ throw new AgeTooSmallException("搞事情,還沒有出生啊~~~~"); } if(age > 200){ throw new AgeTooBigException("搞事情,你是王八啊~~~~"); } this.age = age; }}class Student extends Person { public void setAge(int age)throws InvalidAgeException,AgeTooSmallException{ if(age < 6 || age > 15){ throw new InvalidAgeException("你的年齡不合格~~~"); } super.setAge(age); }}class InvalidAgeException extends AgeTooSmallException{ public InvalidAgeException(){ } public InvalidAgeException(String msg){ super(msg); }}class AgeTooSmallException extends Exception{ public AgeTooSmallException(){ } public AgeTooSmallException(String msg){ super(msg); }}class AgeTooBigException extends RuntimeException{ public AgeTooBigException(){ } public AgeTooBigException(String msg){ super(msg); }}————————————————
以上是我學習java異常是的一個簡單小程序:
1,在上面可以看到,Person類中的setAge方法拋出倆自定義異常,年齡太大異常和年齡太小異常,由于年齡太小異常是運行時異常(RuntimeException),所以不用拋出(做了注釋),之后分別在倆種情況下拋出異常。
2,之后又定義了一個Student類繼承了Person類,Student類實現(xiàn)年齡在6~15歲之間算作正常的上學年齡,如果不在這個年齡范圍之內(nèi),則拋出InvalidAgeException異常。因為Student是Person的子類,Student中setAge方法是重寫Person類中的setAge的方法,因為一、如果父類拋出多個異常,其被重寫(覆蓋)方法必須拋出那些異常的子集,不能拋出新的異常。二、一個方法被覆蓋時,覆蓋他的方法必須拋出相同的異常或者異常的子類。
3,看到主函數(shù)中的try--catch結(jié)構(gòu)catch的順序需要注意:子類異常需要先行catch,否則代碼不可達,編譯也不通過。
----------------------------------------------------------------------------------------------------------------------------------
第一次寫博客,留個紀念,多多指教哈~~~~~~~
新聞熱點
疑難解答