0

目標は、次のことができるようにすることです。

throw new RuntimeException();

印刷せずに:

Exception in thread "main" java.util.RuntimeException
at grame.GrameManager.add(GrameManager.java:40)
at grame.GrameManager.add(GrameManager.java:47)
at grame.Entity.<init>(Entity.java:56)
at grame.Entity.<init>(Entity.java:28)
at test.Test.main(Test.java:20)

(例えば)。

これは可能ですか?もしそうなら、私はこれをどのように行うのですか?

4

8 に答える 8

3

設定することでSystem.errをリダイレクトできますSystem.setErr(null);

于 2012-07-24T16:29:00.213 に答える
3

例外は重要なので、log4j(http://logging.apache.org/log4j/1.2/)のようなログメカニズムを使用して、一部の例外を出力またはログに記録したくない場合は、ログを別のレベルに設定できます。たとえば、コンソールではなくファイルに変換します。

例外を気にしない場合は、それをキャッチして何もしません(空のキャッチ、ひどいです)。

于 2012-07-24T16:30:41.770 に答える
2

スローされた例外がエラーコンソールへのスタックトレースを直接生成することはありません。そうするためにそれを呼び出しているのはコード次第です。メインプログラムの場合:

public static void main(String args[]) throws Exception {
   // do something that throws an exception
}

例外をキャッチしなければ、システムは実際にそれを私が信じているコンソールに吐き出します。

途中のどこかで、例外に対処する必要があります。GUIに表示したい場合は、次のようにする必要があります。

public interface ExceptionHandler {
     void handleException(Exception e);
}


public static void main(String args[]) {
  ExceptionHandler exceptionHandler = ...;

  try {
     // something that might throw an exception
  }
  catch (Exception e) {
     exceptionHandler.handle(e);
  }
}
于 2012-07-24T18:46:38.163 に答える
1

例外をキャッチするだけで、キャッチブロックには何も入れないでください。

これを行うことは一般的に悪い考えであることを付け加えなければなりません。そのスタックトレース、またはある種のメッセージがあると、プログラムで何がうまくいかなかったのかを見つけるときに非常に役立ちます。

于 2012-07-24T16:27:42.773 に答える
1

スタックトレースを出力せずにプログラムを強制終了するメソッドが必要な場合は、それをtry / catchブロックに配置し、catchの下で次のステートメントを使用します。

System.exit(1)

これにより、システムはプログラムが不規則な(ゼロ以外の)状態で終了したことを認識できますが、System.errには何も出力されません。

于 2012-07-24T16:28:42.290 に答える
0

あなたが本当にする必要があるのはそれを捕まえることだけです...しかし、これは本当に悪い考えです。独自の例外を作成して、それをキャッチすることをお勧めします。このようにして、無視してはならない例外を飲み込むことはありません。これを実際に検討する必要があるのは、アプリケーションを爆破させることができない場合のみです。その場合は、少なくともエラーをログに記録する必要があります。

これは私ができるよりもそれをよく説明しています(そしてそれにもかかわらず良いリソースです)。基本的に、それは次のことを示唆しています:

「クライアントが例外からの回復を合理的に期待できる場合は、それをチェックされた例外にします。クライアントが例外から回復するために何もできない場合は、それをチェックされていない例外にします。」

于 2012-07-24T16:28:25.900 に答える
0

このような:

try {
    some code...
} catch (RuntimeException e) {

  }
于 2012-07-24T16:29:01.103 に答える
0

1.コンパイル中 に、catchにコードを実装するかどうかに関係なくJava compiler 、tryのcatchを指定したことだけを気にします。

2. catchブロックをのままにするか、コンソールに印刷してログに記録することができます。

例えば:

try{

    }catch(Exception ex){



  }

3.ただし、、、、および例外が発生した場所printStackTrace()出力します。method nameclass namefile nameline number

于 2012-07-24T16:34:13.617 に答える