1

プログラム内でIndexOutOfBoundsExceptionが発生する可能性があるとします。私は次のようにそれを処理しています:try {} catch(){}ブロックを使用して詳細なエラーメッセージを表示する方法

try{ 
//throws an IndexOutOfBoundsException during runtime 
}catch(IndexOutOfBoundsException ex){ 
System.err.println(ex); 
} 

これはのみjava.lang.IndexOutOfBoundsExceptionが表示されます。しかし、エラーを処理せずにプログラムを終了すると、Javaが私たちに与えるような(lineNumber、fileNameなど)詳細なエラーメッセージ(プログラムを終了させない)を表示したいと思います。コンソール出力がどこにある環境で実行している場合

try { 
    int[] x = new int[1]; 
    x[2] = 5; 
} catch (IndexOutOfBoundsException ex) { 
    ex.printStackTrace(); 
} 
System.err.println("Program completed successfully"); 

Demo.

+2

使用ex.printStackTrace() –

答えて

1

Javaでは、例外オブジェクトでprintStackTraceを使用すると、Javaで印刷されたスタックトレースを取得できます。あなたの場合、最小:

try { 
    // Throw an IndexOutOfBoundsException 
} catch (IndexOutOfBoundsException ex) { 
    ex.printStackTrace(); 
} 

これは、System.errにスタックトレースを出力します。プリントストリームを渡すこともできますし、さえ、その特定のストリームにプリントすることもできます。あなたはJavaのロガーを使用している場合

また、あなたが使用することができます。

logger.log(<LOG_LEVEL>, <LOG_MESSAGE>, ex); 

は例外をログに記録します。詳細については、https://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html

-1

あなたは例外を印刷する

ex.GetMessage() 

おかげ

+0

は、私は方法がex.getMessage(あるべき推測 「のシンボルを見つけることができない」と言う)が、まだ私はエラーの詳細を取得しません。実際には私は全くエラーメッセージを表示しません:/ –

+0

これはユーザーの質問に答えません。 –

2

使用ex.printStackTrace()メソッドを使用することができます望ましくない、ex.getStackTrace()、および表示要素は、プログラムのユーザーインターフェイスと一貫しています。

+0

これは非常に有用な兄だった:)しかし、これはあまりにも多くの情報を印刷します。エラーメッセージがJavaが提供するようなものにしたいと思います。 java.lang.ArrayIndexOutOfBoundsException:sth.mainで6 \t(sth.java:15)sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で \t sun.reflect.NativeMethodAccessorImpl.invokeで \t(不明なソースedu.rice.cs.drjava.model.compiler.JavacCompiler.runCommandでsun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)java.lang.reflect.Method.invokeで \t(不明なソース) \tで) \t( JavacCompiler.java:226) –

+0

上記の行をどのように表示するかを知りました。 :D –

0

私の教師の1人から得ました。私のような他の初心者にも役立つかもしれません。 (これは任意のHW /割り当て/などの一部ではありません。好奇心。)

public class ExceptionDemo{ 
public static void main(String[] args){ 
    int[] array = new int[2]; 
    try { 
     System.out.println(array[100]);//non-existent 
    } catch (IndexOutOfBoundsException ex){ 
     StackTraceElement[] e = ex.getStackTrace(); 
     System.err.println("Got error= " + ex + "\n"+ 
          "in file "+e[0].getFileName() +"\n"+ 
          "in class "+e[0].getClassName() +"\n"+ 
          "in method "+e[0].getMethodName() +"\n"+ 
          "in line "+e[0].getLineNumber()); 
     System.err.println("Full trace= "); 
     ex.printStackTrace(System.err); 
    } 
    System.out.println("As Salamu Alaikum"); 
    } 
} 
関連する問題