1

例外をスローする簡単な方法があるかどうかを知りたいのですが、選択した正確な文字列のみを使用してください。スタック トレースを取り除く方法を見つけましたが、すべての例外の先頭を削除したいと考えています。

「スレッド「メイン」RuntimeExceptionでの例外...」

これを行うためのシンプルでエレガントな方法を探しています(非常にシンプルではありませんが、複雑すぎません)。

ありがとう!

4

7 に答える 7

3

これを行う正しい方法は、独自のカスタムのキャッチされない例外ハンドラーを設定することです。

public static void main(String... argv)
{
  Thread.setDefaultUncaughtExceptionHandler((t, e) -> System.err.println(e.getMessage()));
  throw new IllegalArgumentException("Goodbye, World!");
}
于 2016-01-13T20:36:41.130 に答える
1

ただ行う:

try {
    ...
} catch (Exception e) {
    System.err.print("what ever");
    System.exit(1); // close the program
}
于 2016-01-13T20:27:56.873 に答える
0

これがあなたのやり方です:

try{
   //your code
 }catch(Exception e){
   System.out.println("Whatever you want to print" + e.getMessage());
   System.exit(0);
 } 
于 2016-01-13T20:23:10.047 に答える
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 でも行うことができます。

于 2016-01-13T20:39:27.770 に答える
0

例外オブジェクトを作成すると、コンストラクターの 1 つがメッセージの String オブジェクトを受け取ります。

于 2016-01-13T20:27:50.700 に答える
0

openJDK を入手した場合を除き、ソースを変更して再コンパイルすることはできません。

ただし、ほとんどの開発者は通常、log4j などのログ ライブラリを使用し、ログ設定に従ってさまざまな詳細レベルを使用します。

したがって、TRACE や DEBUG などの下位レベルと、ERROR または WARN (または INFO) レベルの人間が読みやすいメッセージを使用して、完全なスタック トレースを出力できます。

于 2016-01-13T20:27:51.180 に答える