2016-10-09 10 views
1

カスタム例外での継承の使用を実演するように要求されました。これは私に尋ねられたものです。 MyExceptionというクラスを作成します。 - 継承を使用して、Exception1とException2の2つの例外クラスを作成します。 - 各クラスには、適切なコンストラクタが必要です。コンストラクタは、使用時にそれぞれ「例外1」や「例外2」などの関連するメッセージを提供します。は、カスタム例外の継承を実証します。Java

enter image description here

ので、私はのjava.lang.Exceptionから継承MyExceptionを、作成した:私は、その後Exception1とException2を作成

public class MyException extends Exception{ 

//default constructor 
public MyException() {} 

//constructor that accepts a message 
public MyException(String message){ 
    super(message); 
} 

、彼らはにもかかわらず

public class Exception1 extends MyException { 

} 


public class Exception2 extends MyException { 

} 

空ですそれはうまくいく、私は私のアプローチが正しくないと思う。 これは私がそれをテストする方法です。

//demonstrate use of custom exceptions 
try{ 
    if(true) {throw new Exception1();} 
}catch (Exception1 e){ 
    System.out.println("exception1 thrown"); 
} 

try{ 
    if(true) {throw new Exception2();} 
}catch (Exception2 e){ 
    System.out.println("exception2 thrown"); 
} 

これを正しく行うにはどうすればよいですか? Exception1クラスとException2クラスにはどうすればいいですか?

答えて

1

例外がスローされたものを印刷するのではなく、Exception.getMessage()の結果を印刷してください。そうでない場合、この場合は例外がメッセージに表示されます。

try{ 
    throw new Exception1("This is thrown intentionally"); 
}catch (Exception1 e){ 
    System.err.println(e.getMessage()); 
} 

あなたはまた、例えば、彼らはより具体的な例外(優れた実践)から拡張することができ、あなたの例外の内部のカスタムメソッドまたは追加のメッセージを追加、またはすることができます。

これ以上はありません。カスタム例外の

例:

public class MyException extends Exception { 

public MyException() { 

    super(); 

} 

public MyException(String msg){ 

    super(msg); 

} 

public MyException(String msg, Exception cause){ 
    super(msg, cause); 
} 

public static void main(String[] args) { 

    try { 

     throw new MyException(); 

    } catch (Exception e) { 

     System.err.println(e.getMessage()); 
    } 
} 

} 
+0

おかげで、理にかなっています。しかし、私はe.getMessage()から結果を取得しません...私はこのようにコンストラクタを設定しました:super(message = "Exception1 thrown"); ...私はどこでミスをしていますか? – JohnSnow

+0

e.getMessage()を呼び出すだけで何も起こらない場合は、私が示したように、それを印刷する必要があります。私が示したようにしているなら、あなたはコンストラクターを正しく構築できませんでした。私は完全な例を提供します。 – Athamas

+0

私はSystem.out.println(e.getMessage())を使用しています。私はnull値を取得します。あなたが私に完全な例を与えることができれば、それはすばらしいことになります。 – JohnSnow

関連する問題