異常と異常なチェーン

まず、異例の5つのキーワード

  最後に....キャッチ....してみてください

  スローを投げます

  図1に示すように、try文の役割は、エラーコードはtryブロックに配置することができるされています  

  2、キャッチ機能は例外が発生したときにしようと、例外を捕捉することで、プログラムは、ステートメントをキャッチする権限を実行します

  図3に示すように、最終的にかかわらず、プログラムが例外であるか否かのブロックの役割は、最終的に、ブロックはSystem.exit(1)仮想マシンは、JVMを停止させる場合を除いて、実行されます

  図4に示すように、例外の役割は、最終のメソッド宣言に生じる可能性があるメソッドを宣言することであるスロー

  5、動詞を投げるには、例外をスローすることです

第二に、異常なチェーン

  キャッチ例外は、その後、別の例外がスローされ、そして鎖は、典型的なプロセスであり、元のメッセージをダウン保存し、とも呼ばれる「異常チェーン。」

  JDK1.4からは、Throwableのコンストラクタのすべてのサブクラスは、原因パラメータとしてオブジェクトを受け入れることができます。あなたも、現在の場所に新しい例外を作成し、投げるように、元の例外は、新しい例外に渡され、置くことができますし、異常が最初に発生した異常なチェーンの位置を追跡できるように、元の例外この原因を表すために使用されます。

  例えば、我々は、ユーザー名またはパスワードがnullの場合、登録は、異常がのLoginExceptionをスローされた場合、しかし、登録が成功につながることができないため、着陸時に、異常なログインの根本的な原因や原因登録するにはログイン、ZhuceExceptionを投げたときに、異常な登録ログインを完了しました異常な、私たちはただ投げるべきではないと、LoginException例外もZhuceException情報も同時に与えられているものとします。

    コードは以下の通りであります:

ZhuceException.java

1  パブリック クラス ZhuceExceptionは延び例外{
 2  
3      公共ZhuceExceptionを(){
 4          スーパー();
5          // TODO自動生成コンストラクタスタブ
6      }
 7  
8      公共ZhuceException(文字列メッセージ、Throwableの原因){
 9          スーパー(メッセージ、原因)。
10          // TODO自動生成されたコンストラクタは、スタブ
11      }
 12  
13      公衆ZhuceException(文字メッセージ){
 14          (メッセージ)。
15          //TODO自動生成コンストラクタスタブ
16      }
 17  
18      公衆ZhuceException(Throwableの原因){
 19          (原因)。
20          // TODO自動生成されたコンストラクタは、スタブ
21      }
 22      
23 }

LoginException.java

パブリック クラスのLoginExceptionは延び例外{ 

    公共のLoginException(){
         スーパー()。
        // TODO自動生成コンストラクタスタブ
    } 

    公共のLoginException(文字列メッセージ、Throwableの原因){
         スーパー(メッセージ、原因)。
        // TODO自動生成コンストラクタスタブ
    } 

    公共のLoginException(文字メッセージ){
         スーパー(メッセージ)。
        // TODO自動生成コンストラクタスタブ
    } 

    公共のLoginException(Throwableの原因){
         スーパー(原因)。
        // TODO自動生成されたコンストラクタスタブ
    } 
    
}

User.java

パブリック クラスユーザー{ 
    String型のuserName; 
    int型の年齢; 
    文字列のパスワード。
    文字列のセックス。
    パブリック文字列getUserName(){
         リターンのuserName。
    } 
    公共 ボイドsetUserName(文字列のuserName){
         この .userName = userNameに。
    } 
    公共 INT getAge(){
         戻り年齢; 
    } 
    公共 ボイド setAge(int型の年齢){
         この .age = 年齢。
    } 
    パブリック文字列getPasswordに(){
        戻るパスワードを。
    } 
    公共 ボイドするsetPassword(文字列のパスワード){
         このみましょう。パスワード= パスワード。
    } 
    パブリック文字列getSex(){
         戻り性別; 
    } 
    公共 ボイドsetSex(文字列性別){
         この .sex = セックス。
    } 
    
}

Zhuce.java

パブリック クラスZhuce { 
    文字列のuserName; 
    int型年齢; 
    文字列のパスワード、
    文字列のセックス、
    無効 zhuce(ユーザーユーザー)がスローZhuceException { 
        ; user.setUserName(ユーザー名)
        user.setPassword(パスワード); 
        user.setAge(年齢); 
        user.setSexを(セックス); 
        IF(ユーザ名== nullの ||パスワード== nullの){
             スロー 新しい新 ZhuceException( "登録ユーザー名またはパスワードがnullでない、失敗しました" ); 
        } { 
            System.out.printlnはは( "正常に登録" ); 
        } 
        
    }
    公共 Zhuce(文字列ユーザ名、int型の年齢、文字列のパスワード、文字列の性別){
         この .userName = userNameに。
        この .age = 年齢;
        このみましょう。パスワード= パスワード;
        この .sex = セックス。
    } 
}

Login.java

パブリック クラスログイン{
     ログイン(ユーザーユーザー、Zhuce zhuce)がスローされますと、LoginException {
         試み{ 
            ; zhuce.zhuce(ユーザー)
        } キャッチ(ZhuceException E){ 
            e.printStackTrace(); 
            スロー 新新のLoginException(「登録ユーザー名やパスワードをヌルログイン失敗"E);      コアストランド例外を達成するための//コード
         } 
        
        のIF(user.usernameが=="仲間に滞在してください" ){
             IF(user.password ==" 123456 " ){ 
                System.out.printlnは(「ログイン成功」); 
            } {
                 スロー 新新のLoginException( "間違ったパスワード" ); 
            } 
        } { 
            System.out.printlnは( "ユーザ名の入力エラー!" ); 
        }         
    }     
}

Test01.java

パブリック クラスTEST01 {
     公共 静的 ボイドメイン(文字列[]引数){ 
        ユーザーユーザ = 新しいユーザー(); 
        Zhuce zhuce = 新しい Zhuce( "道友请留步"、18、 "123456"、 "男" ); 
        ログインログイン = 新しいログイン();
        試す{ 
            login.login(ユーザ、zhuce)。
        } キャッチ(のLoginException電子){ 
            e.printStackTrace(); 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/daguoshi/p/10979538.html