JAVA筆記_內部類 & 例外處理


內部類

將A類別內創建一個B類別 , A為B的外部類 B為A的內部類
特性:

  • 內部類可以直接使用外部類private方法及屬性
  • static內部類才可以取用外部static方法屬性
public class outer{
    private int id=10;
    public void out(){
        System.out.println("out");
    }
    //內部類
    public (static) class inner{
        public void in(){
            System.out.println("in");
        }
        public void getID(){
            System.out.println(id);
        }
    }
}
public static void main(string args[]){
    outer outer=new outer();
    //用外部類來實例化內部類
    outer.inner inner = outer.new inner();
    inner.getID(); //10
}

例外處理

Throwable類別

當Java執行時產生的例外是一個物件,而其物件的最上層父類別就是Throwable

以下有兩大子類別:

  • Error: 會導致程式中止執行,無法使用例外處理解決, 很多屬於無法預料的錯誤
  • Exception: 不會嚴重到程式終止執行, 可以用例外處理解決,是程式設計問題所產生

例外處理code

分為三個程式區塊

  • try: 必須存在, 驗證此區塊由無throwable物件,若有則丟到相對應catch區塊中處理
  • catch: 必須存在, 處理相對應的throwable物件
  • finally: 非必須存在, 區塊內容一定會被執行

被動拋出錯誤物件:

public static void main(string args[]){
    int a=1;
    int b=0;
    try{
        System.out.println(a/b); //拋出ArithmeticException物件
    }
    catch(Throwable ex){ //直接寫父類任何錯誤都可以抓
        ex.printStackTrace(); //印出錯誤訊息
    }
    finally{

    }
}

主動拋出錯誤物件:

在try區塊主動拋區物件讓catch區塊處理:

  • throw
    try{
      if(b==0) throw new ArithmeticException(); //主動拋出
    }
    
  • throws
    假設此方法中處理不了這異常,方法會向上拋出異常
    會逆著Call Stack以逆向看哪個function可以處理,都不行的話最終JVM會報錯
    public void test(int a,int b) throws ArithmeticException{
      if(b==0) throw new ArithmeticException(); //主動拋出
    }
    

自訂義異常

在自訂義異常class後, 使其繼承Exception類別

public class myEX extends exception{
    private int detail;
    public myEX(int a){
        this.detail=a;
    }

    //toString
    public String tostring(){
        return "myException{"+"detail="+detail+"}";
    }
}

實際應用:

  • 多用合理邏輯編寫程式並用try+catch輔助
  • 多個catch後面可以加一個處理大範圍的, catch(Exception e)處理可能遺漏異常
  • finally釋放占用資源
#java 內部類 例外處理






你可能感興趣的文章

MTR04_0720

MTR04_0720

CH4. 老手看函式:理解函式呼叫

CH4. 老手看函式:理解函式呼叫

Return the summation of the number smaller than n

Return the summation of the number smaller than n






留言討論