私は EJB サービスを開発していますが、私のサービスは 1 種類の例外しかスローできませんMyServiceException
。つまり、発生したすべての例外がラップされMyServiceException
、クライアントに再スローされます。しかし、(セキュリティ上の理由から) スタック トレースをクライアントに表示したくありません。また、このスタック トレースをログに記録し、クライアントにのみエラー メッセージを表示したいだけです。したがって、次のコードを書くだけで十分です。
catch (Exception e) {
logger.error("Error when creating account", e);
throw new MyServiceException("Error when creating account" + e.getMessage());
}
しかし、メソッドのスタックがある場合はどうなるでしょうか: 1 -2 -3. そしてメソッド 3 は message"Not enough money"
で意味のある例外をスローするので、このメッセージを client に表示したいと思います。しかし、メソッド 2 はこの例外を new message"Some problem with your credit card"
で再ラップするため、メソッド 1 を呼び出すと .ではなくe.getMessage()
のみが返されます。この場合、例外を処理するにはどうすればよいでしょうか? 私が投げたすべてのメッセージを取得する方法は?"Some problem with your credit card"
"Not enough money"