[Java]例外処理

Javaプログラムでは、発生する異常な状況を例外と呼びます

-[論理エラーと文法エラー]は異常ではありません!

-エラーと例外に分割

-Errorは、メモリオーバーフローStackOverFlowやOOMなど、JVMが解決できないエラーの問題です。

-例外は通常、予期しない問題を処理します

たとえば、nullポインタNullPointerException、範囲外のOutofIndexException、接続タイムアウト例外、例外を読み取ることができません

 

例外処理の場合、1はプログラムを終了し、2は書き込み時に例外の可能性を設定します

 

コンパイル時の例外と実行時の例外

コンパイル時に例外チェック

 

ランタイム例外がチェックされていません

 

 

2つの処理メカニズムTry-Catch-Finally Throws-Throw

 

 -コンパイル時に存在する可能性のある例外をランタイムに処理する

// 異常プログラム実行種、生成された例外オブジェクトに対応するエラーコードを発生し、例外クラスをスロー
     // 例外オブジェクトが送出されると、実行は終了
    @Test
     公共 ボイドexceptionTest1(){
         試み{
             // 可能な例外をコード 
        } catch(例外例外){ // パラメータの一致時に発生する例外。catch コードブロックを入力して例外を処理します// 例外
             を処理する方法
            exception.printStackTrace(); 
        } finally {
             // 例外が発生するかどうかに関係なく、最終的にはコードのブロックは
             // そのようなリソースの解放と、最後に実行されなければならないコードを適用 
            するSystem.out.println(「コードが実行されなければならない!」); 
        } 
        //ダイレクトシステムが最終的に試みを終了することに加え、実行されます
         // 最後に試みが復帰方法を浮上している場合、最後に終了し、リターンを実行しようとするために戻って待機しなければならない
    } 

    @Test 
    公共 無効exceptionTest2(){
         しようと{ 
        } finally { // 例外を処理せずに最終的に直接実行できますが、使用しません
        } 
    } 

    @Test 
    public  void exceptionTest3(){
         try {
             // 複数の例外を1つずつキャッチできます 
        } catch (NullPointerException nullPointerException){ 
            nullPointerException.printStackTrace() ; 
        } キャッチ(ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException){ 
            arrayIndexOutOfBoundsException.printStackTrace(); 
        } catch (ArithmeticExceptionmathException){ 
            arithmeticException.printStackTrace(); 
        } catch (Exception exception){
             // すべての例外がキャッチされない場合は、最後に例外処理
            例外
        全体に渡してください。 printStackTrace(); 
        } // 最初に合計例外キャッチを書き込まないでください合計例外が直接キャッチされて処理された後、次の詳細な例外はキャッチできず、白で書かれます 
    }
TRY-CATCH-最後に

 

-上向きに投げ続けます

    // 処理にtry-catch-finallyを使用しない場合、直接例外をスローできます
    
    // 対応する例外タイプをスローし、このメソッドで発生する可能性のある例外を宣言します。例外が発生した場合は、基本的に// 例外をスローします
     。 throwsは例外を解決しませんが、releaseメソッドの呼び出し元に例外をスローします。呼び出し元は、キャッチまたは継続してスローアップできます
     。// 例外が発生すると、この例外が満たされると、例外オブジェクトで例外オブジェクトが生成されますthrowsに例外タイプが含まれている場合、例外オブジェクトは
    public  void throwsMethod()throws Exception { 
    }をスローします
       
投げる

 

使用シナリオ:

-親クラスのオーバーライドされたメソッドは例外をスローせず、サブクラスはスローを使用できません。サブクラスのオーバーライドされたメソッドが失敗した場合は、試行キャッチする必要があります

-他の複数のメソッドがプログレッシブ関係であるメソッドaで呼び出されます。呼び出されたメソッドはスローを宣言し、メソッドaのtry-catchメソッドでそれらを一緒にスローする必要があります。

 

-THROWは例外を手動で作成し、例外をスローします

    void throwException(int age)throws Exception {
         if(0 <age || age> 100)throw  new Exception( "不合理的年龄" ); 
    }
スロー

 

 

カスタム例外クラス

/ * 
コンパイル時例外Exception 
RuntimeException 
 * / 

// カスタム例外は例外クラスを継承する必要がある
public  class WTF_Exception extends Exception { 

    // 不明な定数ID 
    static  final  long serialVersionUID = -3387516993124229948L ; 
    
    public WTF_Exception(){ 
        
    } 
    
    public WTF_Exception(文字列メッセージ){
         super (メッセージ); 
    } 
}
コードを表示

UIDをシリアル化してレコード識別値を保存しますか?

https://blog.csdn.net/seabreezesuper/article/details/70141844

 

おすすめ

転載: www.cnblogs.com/mindzone/p/12725913.html