Javaプレミアムプログラミング4-姜国海

5427 ワード

①パッケージ
class Student {
    public int age;
    public Student(){
        this.age = 0;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age){
        this.age = age;
    }
}

eclipse       set getset       


②異常処理
1.string:     
2.3.     :   
       Throwable    error Exception

error:    ,      

Exception:        

NullPointerException:      

IndexOutOfBoundsException:         

ArithmeticException:       

RuntimeException:    ,           

    0   :  INF

ClassCastException:     

Eg:
class Fruit {

}

class Apple extends Fruit  {

}

                       

Fruit f;
Apple a;

f = a; //  ,       
if(f instanceof Apple){//           
    a = (Apple) f; //       
}

if(null instanceof Apple){//  false
}
Eg:
if(f instanceof string[]){}

          instanceof          

checked exception                 
 Exception     RuntimeException         


③検査異常


      
FileInputStream file = new FileInputStream ('a.txt');
int c = file.read;
file.close();

                       ,      
1.try{} catch{}
unreachable:          java     
Eg:while(false)
  catch           
catch              
finally:          ,return        

  
try{}
finally{
..//           
}

getMessage()
getCause()   
while(Throwable e){
    while(e!==null){
        System.out.println(e.getMessage());
        e = e.getCause();
    }
}

     
e.printStackTrace();


2.        throws Exception

public static void a() throws Exception ,...{//  Throwable      

}
           

class A {
    void a(){
        try{
        }catch(java.io.IOException){
            //       try             ,      ,      
        }
    }
}



④カスタム例外クラス
pubic class MyException extends Exception {
    private int pains = 0;
    public MyException (String message, Exception e,int pains){
        super(message,e);
        this.pains = pains;  
    }
}

void a() throws AException{
    try{
    }catch(BException e){
        throws new AException(e);//    
    }
}


⑤多態と異常
オーバーライド関数は、オーバーライドされた関数に宣言されていないチェック例外を投げ出すことはできません.オーバーライドされた関数よりもアクセス権が低いか、または等しいオーバーライド関数のみが使用できます.