第14章-私はもう勉強を終えたと思いますが、重要な例外があります.



  • 例外
  • 私たちが予想したことや予想しなかったことが起こったことを予見してから、安全措置をとる
  • .
  • をコンパイルできますが、実行中にエラーが発生しました.
  • try~catch文
  • tryの後に異常が発生した文を括弧で囲み,catch括弧内に異常が発生した場合に処理する.
  • tryブロックで例外が発生した場合、後続の文は実行されずcatchブロックにジャンプします.
  • tryブロックに異常がない場合、try内ですべての文が実行され、try-catch文の後の内容が実行されます.
  • catchブロックは、複数の
  • を記述することができる
  • catchブロックの順序は非常に重要です.
  • catch文で使用される変数はtryの前に予め宣言されています.
    try文で宣言すると使えなくなります.
  • try~catch~finally
  • finally:いずれの場合も実行する必要があるコードブロック
  • 異常の親はjavaです.lang.Exceptionレベル
  • の最後のcatchブロックでExceptionクラスをキャプチャすることを推奨します.
    catchブロックに異常発生に関連するブロックがない場合、異常発生時にスレッドが終了します.したがって,最後のcatchブロックをExceptionクラスにバインドする習慣を身につけてこそ,安全なプログラムになることができる.
  • 
      public void multicatch(){
          int[] intArray = new int[5];
          try{
        	  System.out.println(intArray[5]);
        	} catch (ArrayIndexOutOfBoundsException e){
        	  System.out.println("ArrayIndexOutOfBoundsException occurred");
        	} catch (Exception e){
        	  System.out.println(intArray.length);
        	}
      }
    
      출력 
      ArrayIndexOutOfBoundsException occurred
    

  • 上記の例では、2つのcatch文の順序を変更するとコンパイルエラーが発生します.
    Exceptionクラスはすべてのクラスの親であるため、ArrayIndexOutOfBoundsExceptionクラスはExceptionクラスの子である.親例外クラスが取得され、子クラスが取得された場合、子クラスは例外を処理できず、コンパイルエラーが発生します.

  • 例外タイプ

  • checked exception
  • error、運転時異常(unchecked exception)を除くすべてのエラー

  • error
  • Javaプログラム以外の異常
  • エラーとExceptionで終わるエラーの最大の違いは、プログラム内かプログラム外かです.
  • エラーはプロセスに影響しますが、Exceptionはスレッドにのみ影響します.

  • 運転時異常または未検査異常
  • 異常が予め検出する場合は
  • が発生する.
  • Runtime Exception拡張の例外
  • は例外を含まないため、コンパイル時に例外は発生しないが、実行時に発生する可能性がある.
  • 呼び出しメソッドではtry-catchを使用してバインドすることが望ましい.

  • ExceptionとErrorクラスはjavaです.lang.Throwableクラスは継承可能なので、ExceptionやErrorの処理においてもThrowable処理は関係ありません.
    このような継承関係があるのは,Exception,Errorクラスは異なる性質を持つが,同名の方法で処理できるためである.
  • Throwable
  • Throwable()
  • Throwable(String message)
  • Throwable(String message, Throwable cause)
  • 例外メッセージ;オブジェクト
  • を介して例外
  • Throwable(Throwable cause)
  • Throwableクラスで宣言されており、Exceptionクラスで最も多く使用されているいくつかの方法の1つです.
  • getMessage()
  • 例外情報はString形式で提供される.
  • toString()
  • 例外情報はString形式で提供される.
    getMessage()よりも詳細に例外クラス名を指定します.
  • printStackTrace()
  • 第1行は異常メッセージを出力し、第2行は異常をもたらすメソッドの呼び出し関係(スタックトラッキング)の出力を開始する.
  • は大量のログが蓄積されており、開発時にのみ
  • を使用することを推奨します.

  • throws

  • 異常の原因

  • tryブロックでthrowを宣言すると、開発者は例外クラスのオブジェクトを作成または作成します.throw文の後のtryブロックの文は実行されずcatchブロックに移動します.

  • catchブロックにthrowの例外と同じまたは継承関係の例外がある場合は、そのブロックで例外を処理できます.

  • throws
  • 異常のcatch文が発生していない場合、発生した異常はメソッドの外に投げ出され、すなわち異常が発生したメソッドが呼び出されます.
  • がこのように宣言すると、異常が発生した場合にtry-catchを使用しなくても、このメソッドを呼び出す方法で異常処理が委任される.
  • throwsの後に宣言された例外が発生した場合、呼び出しのメソッドに例外が渡されます.
  • 複数の場合は
  • をカンマで区切る
  • catchブロックで例外が投げ出された場合、メソッドが宣言するthrows構文で例外を定義する必要があります.
  • throws文でコンパイルエラーが発生した場合の解決方法
  • を呼び出すメソッドをtry-catchにバインドします.
  • コールの方法でも再び投げます.(推奨x)
  •       public void throwsException(int number) throws Exception {
                  if(number>12)
                          throw new Exception("Number is over than 12");
                  System.out.println("Number is " + number);
          }
  • の任意の例外クラスを作成する場合は、Throwableまたはそのサブクラスを継承する必要があります.
  • javaで例外を処理する場合は、基準を制定する必要があります.
    catch文では、処理方法を明確に宣言する必要があります.
  • catch文でログ保持などの操作を行います.
    throwを利用して例外を投げ出してこそ、問題が発生した正確な原因を見つけることができる.
  • の任意の例外クラスを作成する場合、try-catchを使用してバインドする必要がある場合にのみExceptionクラスを拡張します.通常、実行時に例外を処理できる場合は、RuntimeExceptionクラスを拡張することをお勧めします.