본문 바로가기

Web Dev/JAVA

오늘의 java 예외처리

課題の時、RunTime Error , Debug Errorの違いを気づきました。エラーの種類を理解してすべてがDebug Errorだけではないのを知りました。

publicメソットはすべてオーバーライドができるものではなく、Finalの場合はできないというのも理解しました。

例外処理はTry-Catch、Throwsを使うのは

選択チェックされる例外・チェックされていない例外に分けて例外を処理するのを気づきました。

java.lang.RuntimeExceptionクラスを継承した例外は、

 明示的な例外処理を強制していない、チェックされない例外と呼ばれること。

このランタイム例外(RuntimeException)はcatch文で取り出すか、throwsで宣言しなくてもよい。

ランタイム例外は、主にプログラムのエラーがある場合に発生するように意図されたものである。

 このような例外は、コードで事前条件をチェックするように注意深く作成された場合、投げることができる。

 投げるのができても開発者が不注意て発生する可能性のある場合に発生するように作ったのがランタイム例外。




インスタンス名を宣言する時数字でしないこと、重複クラスを作ったので名前を変更し、全部直したと重ったんですが

Cordingの結果が前にDebugした結果が出て問題を気づかなかったんです。久保先生が数字は良くないから

使わないようにするとおっしゃってくださいました。

例外をしながらコードをゆっくり見ながらながれを理解するのが重要なのを知りました。


Exception in thread "main" 

java.lang.ArrayIndexOutOfBoundsException: 100

(エラーには必ず名前が付いていること、エラーの理由ははっきり呼んで発生したところをちゃんと探す)

at javatry.privates.enjoy.new2015.windows.lesson.chapter13.ExceptionTest1.main(ExceptionTest1.java:10)

                                                                ―>エラーの位置を教えてくれる stackTraceメッソドを使う。

=======


    static void myAssign(int[] arr,int index, int value){

        if(arr.length<=index){ //自分が例外を投げるのができる場合

            String msg = arr.length+"done";

            throw new IllegalArgumentException(msg);

        }

        System.out.println("myAssignにきました。");

        arr[index] = value; //runtime error 



====

if(arr.length<=index){ //自分が例外を投げるのができる場合

  String msg ="The index was over the array lenght:"+ arr.length+":done;"+index;//後の問題に予防する


            throw new IllegalArgumentException(msg);

일때

msg =“the index was over the array length”

차라리 이 부분이 없는게 낫다. 왜냐하면 , 안썼을때의 에러의 문제점 알려주거든 

警告には敏感にしてくださいー


예외의 계층 

RuntimeException

 Exception


================


例外クラスは自分で作るのも可能。



=================

//catch의 순번은 참 중요하다.


try{


myAssign(myarray,100,0):

}catch(FileNotFoundException e){ //먼저 된 catch를 받아들인다.

throw new IllegalStateException("IOError발생"+myarray.length, e);

}catch(IOException e){

throw new IllegalStateException("IOError발생"+myarray.length, e);

}



//예외처리에서도 다형성이 나온다.



private static void myAssign () throws IOException{


}



catch는 보통 내용을 채우는데, 빈 상태로 두는 것도 있다.

catch(IllegalStateException ignored){

 //ignored

}


file로 bufferedreader를 했을 경우에는 반스디 reader.clase();

해야한다.

try{


}catch(){


}finally{

   reader.close();

}



try{


}finally{


} も可能!


try{

return;

}fianlly{


} の場合はfinally後returnされる。