0

がどのようにnullポインタ例外がスローされます。このキャッチ例外は

MyClass obj = null; 
logger.info("the field is " + obj.field); 

のようなコードでは、Javaで例外でパラメータ

ほんの一例をキャッチすることができますパラメータ。これを自動的に行う方法はありますか?

MyClass obj = null; 
try { 
    logger.info("the field is " + obj.field); 
} catch(Exception e) {} 

おそらく、Spring AOP、注釈などを使用していますか?

編集:ログに記録しようとするコード行から例外がスローされることはありません。

+2

本当に何を望んでいるのでしょうか?なぜlogger.info(フィールドが "+ obj == null?" null ":obj.field);'? – azurefrog

+0

することはできません、そして、ここには何の助けもありません。どのような情報が必要な場合でもクラスのtoString実装を作成し、文字列への参照を追加するだけの方法はありますか? (nullの場合は "null"という文字列が表示されます) – spi

+0

私はコードを例外の影響を受けないようにしたいので、ロギングは私たちを奪うことはできません。これは単なる例です – OneSolitaryNoob

答えて

0

いいえありません。そしてtry catchでコードをラップするべきではありません。これにより、実行時の例外を避けることができますが、実際のコードの問題を隠すこともできます。 Null Object patternを使用できます。空のフィールドを持つマーカークラスを作成し、コードの値がnullの場合は、このマーカークラスのインスタンスに割り当てます。それはあなたのコントロール下のコードではうまくいくはずですが、サードパーティライブラリがNPEを投げることを保証するものではありません。

編集:ログに記録しようとするコード行から例外がスローされないように、例外をキャッチするものが必要です。

これは決して達成できません。あなたが本質的に求めているのは、メインメソッドの最初から最後までtry catchブロックです。たとえあなたがまだ他のスレッドから例外を得ることができるとしても、例えば

+0

ありがとう、私たちはNPEだけでなく、すべての例外をキャッチしたいと思います。 – OneSolitaryNoob

+0

プリプロセッサを使用して終了しました – OneSolitaryNoob