[JAVAの慣例]異常処理


プログラムエラー


エラーとは?
プログラムが実行中に何らかの理由で障害または異常終了した場合、この結果の原因
[エラータイプ]
  • コンパイルエラー:コンパイル時に発生したエラー
  • ランタイムエラー:ランタイムエラー
  • 論理エラー:実行できますが、動作と意図は異なります.
    [コンパイルプロセス]
    1.ソースコードをコンパイルする場合、コンパイラは、エラーチェックやデータチェックなどのソースコード(.java)に対して基本的なチェックを実行します.
    2.すべてのコンパイルエラーを修正し、クラスファイル(.class)を生成し、生成したクラスを実行
    [ランタイムエラー?]
    エラー(error):プログラムコードで処理できない重大なエラー
    [OutOfMemoryError, StackOverflowError]
    異常(exception):プログラムコードによる微小なエラー

    例外クラス階層



    •例外クラスは、次の2つに分類できます.
    1. RuntimeException Class
    2. Exception Class
    [1]RuntimeExceptionクラス:プログラマのエラーによる例外
    -ARayIndexOutOfBoundException:アレイ範囲外
    -NullPointerExceptionの呼び出し:null参照変数のメンバー
    -ClassCastException:クラスからクラスへの変換エラー
    [2]Exception Class:外部からの影響を受けたエラーは、プログラムユーザによって引き起こされる
    -FileNotFountException:存在しないファイルへのアクセス
    -ClassNotFoundException:クラス名入力エラー
    -DataFormatException:入力データ型エラー

    try-catch


    •異常処理
    プログラムの実行中に発生する可能性のある予期せぬ例外のコードを記述します.
    目標は異常発生による異常終了を防止し、正常な運転を維持することである.
  • try-catch
  • try-catchストリーム


    ▶試行ブロック内に異常が発生した場合
    1.異常ブロックがないかチェックする
    2.一致するブロックがある場合は、文を実行し、try-catch文全体を終了します.
    3.一致ブロックがない場合は例外処理はできません.
    ▶試行ブロック内に異常が発生していない場合
    :catch blockを通らず、全体try-catchゲートです.

    •(0/0に相当する例外処理があるため、3は次の例外処理catch文に進みます.)
    [運転結果]
    1
    2
    3
    5
    6
    •異常原因の特定方法
    printStackTrace():例外発生時にスタック内のメソッドを呼び出す情報と例外メッセージを出力します.
    getMessage():発生した例外クラスインスタンスに格納されたメッセージ
    •マルチキャプチャブロック
    「|」記号を使用して重複コードを減らし、複数の例外処理を行うことができます.
    [ポイント]
    祖先|子孫✘:コンパイルエラー(祖先のみを使用するため)
    共通分母の祖先例外クラスで宣言されたメンバーのみ使用可能

    メソッドに例外を宣言

    void method() throws Exception1, Exception2, Exception3 {
    }
    最上位レベルのExceptionクラスをメソッドに宣言すると、すべてのタイプの例外が発生する可能性があります.
    メソッドを作成する際、Javaはメソッドの宣言でメソッドに現れる可能性のある例外を指摘し、そのメソッドを強制的に使用する側が処理するため、堅牢なプログラムコードを記述することができます.

    最終ブロック


    例外が発生するかどうかにかかわらず、実行する必要があるコード
    try-catch-finally(異常がなければtry→finally)

    [運転結果]
    正常に呼び出されました.
    finally
    mainに戻った
    これはtryを実行して戻ってもmainではなくfinallyを経由することを示している.

    自動リソース戻りtry-with-resource


    try-with-resourceは主にI/Oクラスを使用するために使用され、通常はクラスを使用した後に閉じる必要がある場合に使用されます.
    •close()を使用してオフにできますが、close()で異常が発生した場合を考慮する必要があります.

    try-with-resource文のカッコに生成オブジェクトの文を挿入すると、tryを離れるとcloseが自動的に呼び出されます(closeを呼び出す必要はありません).
    2つ以上の例外が発生した場合、エラーに関する情報のみが最後に出力された場合は、「抑制」と呼ばれる抑制エラーですべての例外の情報を表示できます.

    いじょう投げ


    例外を発生させる方法と呼び出す方法はいずれも1つの異常を処理できる(異常を処理してから再発する方法)
  • mainはmethod 1を呼び出し、method 1は異常処理を行い、再び人為的に異常
  • が発生する.
    なぜ
  • と書くのですか?どう書きますか.
  • リンク例外

  • の1つの例外は、別の例外を生成する可能性があります.
  • 例外Aは例外Bを生成し、AはBの原因例外(原因例外)である.
  • 指定した例外を原因例外として登録
    Throwable getCause()原因異常を返す