例外をスローする簡単な方法があるかどうかを知りたいのですが、選択した正確な文字列のみを使用してください。スタック トレースを取り除く方法を見つけましたが、すべての例外の先頭を削除したいと考えています。
「スレッド「メイン」RuntimeExceptionでの例外...」
これを行うためのシンプルでエレガントな方法を探しています(非常にシンプルではありませんが、複雑すぎません)。
ありがとう!
例外をスローする簡単な方法があるかどうかを知りたいのですが、選択した正確な文字列のみを使用してください。スタック トレースを取り除く方法を見つけましたが、すべての例外の先頭を削除したいと考えています。
「スレッド「メイン」RuntimeExceptionでの例外...」
これを行うためのシンプルでエレガントな方法を探しています(非常にシンプルではありませんが、複雑すぎません)。
ありがとう!
これを行う正しい方法は、独自のカスタムのキャッチされない例外ハンドラーを設定することです。
public static void main(String... argv)
{
Thread.setDefaultUncaughtExceptionHandler((t, e) -> System.err.println(e.getMessage()));
throw new IllegalArgumentException("Goodbye, World!");
}
ただ行う:
try {
...
} catch (Exception e) {
System.err.print("what ever");
System.exit(1); // close the program
}
これがあなたのやり方です:
try{
//your code
}catch(Exception e){
System.out.println("Whatever you want to print" + e.getMessage());
System.exit(0);
}
これを行うには、自分で作成できるカスタムException
を作成します。
Checked
、Java コンパイラーによって適用される例外のいずれかです (実装するには、try/catch または throw が必要です)。Unchecked
、実行時にスローされ、Java コンパイラによって強制されない例外である可能性があります。あなたが書いたことに基づいて、Unchecked
強制されていないが実行時にエラーをスローする例外が必要なようです。
これを行う 1 つの方法は、次のとおりです。
public class CustomException extends RuntimeException {
CustomException() {
super("Runtime exception: problem is..."); // Throws this error message if no message was specified.
}
CustomException(String errorMessage) {
super(errorMessage); // Write your own error message using throw new CustomException("There was a problem. This is a custom error message");
}
}
次に、コードで次のことを行うことができます。
public class Example {
String name = "x";
if(name.equals("x"))
throw new CustomException(); // refers to CustomException()
}
または
public class Example2 {
String name = "y";
if(name.equals("y"))
throw new CustomException("Error. Your name should not be this letter/word."); // Refers to CustomException(String errorMessage);
}
これは、Throwable でも行うことができます。
例外オブジェクトを作成すると、コンストラクターの 1 つがメッセージの String オブジェクトを受け取ります。
openJDK を入手した場合を除き、ソースを変更して再コンパイルすることはできません。
ただし、ほとんどの開発者は通常、log4j などのログ ライブラリを使用し、ログ設定に従ってさまざまな詳細レベルを使用します。
したがって、TRACE や DEBUG などの下位レベルと、ERROR または WARN (または INFO) レベルの人間が読みやすいメッセージを使用して、完全なスタック トレースを出力できます。