このセクションでは、次のことを学びます Javaで例外メッセージを出力する方法 さまざまな方法を使用することで、 Java スロー可能 クラス 。 Throwable クラスには、例外メッセージを出力するための次の 3 つのメソッドが用意されています。
- printStackTrace メソッドの使用
- getMessage() メソッドの使用
- toString() メソッドの使用
一つずつ詳しく説明していきます。
printStackTrace() メソッドの使用
の printStackTrace() 方法 で定義されています 投擲可能 java.langパッケージに属するクラス。このメソッドは、 名前、説明 (のような / ゼロまで )、 そしてその スタックトレース 例外の (例外が発生した行番号とクラス名)。スタック トレースは、次の例外が発生した場所を追跡します。例外メッセージを出力するために広く使用されています。
printStackTrace() メソッドには 3 つのバージョンがあります。
前方連鎖
構文 | 説明 |
---|---|
printStackTrace() | このメソッドは、このスロー可能オブジェクトとそのバックトレースを標準エラー ストリームに出力します。 |
public void printStackTrace(PrintStream s) | このメソッドは、スロー可能オブジェクトとそのバックトレースを指定された印刷ストリームに出力します。 |
public void printStackTrace(PrintWriter s) | このメソッドは、throwable とそのバックトレースを指定された印刷ライターに出力します。 |
printStackTrace() メソッドの概念を理解するために、まず、 ジャワ ゼロ除算例外を発生させたプログラム。このプログラムでは、例外を出力するために printStackTrace() メソッドを使用しません。
PrintExceptionMessage1.java
public class PrintExceptionMessage1 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message System.out.println(e); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }
上記のプログラムを実行すると、次の結果が得られます。 算術例外 次のメッセージがコンソールに表示されます。
上記のメッセージでは、どの行が例外をスローしているかを指摘できません。したがって、どこで例外が発生したかを見つけるのは困難です。この問題を解決するには、printStackTrace() メソッドを使用します。 Java プログラムで printStackTrace() メソッドを使用してみましょう。
PrintExceptionMessage2.java
public class ExceptionExample2 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message and detail of the exception e.printStackTrace(); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }
上記のプログラムを実行してみましょう。
上記の例外メッセージは、どのメソッドが例外を発生させたか、例外の種類、およびどの行が例外をスローしたかを明確に示します。
メッセージの最初の行は、プログラムが java.lang.ArithmeticException (ゼロで割る)。 2 行目は、次の行で例外が発生したことを示しています。 9 そしてメソッド Division() は例外をスローします。 3 行目は、次の行での例外を示しています。 21 。 Division() メソッドが main() メソッド内で呼び出されるため、main() メソッドも例外をスローします。したがって、 printStackTrace() メソッドを使用すると、簡単に指摘できます。 正確な場所 例外の。
getMessage() メソッドの使用
の getMessage() メソッドも 投擲可能 java.langパッケージに属するクラス。このメソッドは例外のメッセージのみを出力します。例外の名前も説明も出力しません。例外メッセージを出力するために広く使用されています。
構文:
public String getMessage();
この Throwable インスタンスの詳細メッセージ文字列を返します。 null の場合もあります。
Java プログラムで getMessage() メソッドを使用してみましょう。
Javaの匿名関数
PrintExceptionMesssage3.java
public class PrintExceptionMessage3 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //prints only the message of the exception System.out.println(e.getMessage()); //use the following statement if you want to print name of the exception and which exception thrown //System.out.println(e); } } }
上記のプログラムを実行してみましょう。
例外のみが出力されることがわかります。したがって、例外の詳細な説明を出力しないため、広く使用されていません。
toString() メソッドの使用
の toString() の方法 投擲可能 クラスは toString() オブジェクトクラスのメソッド。例外の短い説明を出力します。その他の情報 (例外名やスタック トレースなど) は表示されません。例外メッセージを出力するためにはあまり使用されていません。
Java プログラムで toString() メソッドを使用してみましょう。
PrintExceptionMessage4.java
C++の文字列
public class PrintExceptionMessage4 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //we can use either of the statement to print the exception message //both prints the same message System.out.println(e.toString()); //System.out.println(e); } } }
上記のプログラムを実行してみましょう。
上記のメッセージでは、例外の名前とタイプのみが出力されることがわかります。どの行で例外が発生したかは指摘されません。
Java で例外メッセージを出力するさまざまな方法を見てきました。を使用することをお勧めします。 printStackTrace() このメソッドは例外が発生する場所を指しているためです。