私は小さな石鹸のウェブサービスを持っています。そして、どうすればエラーで対応できるのだろうか。
例えば:
public int createUser(String username) {
//create...
return id;
}
さて、ユーザーを作成できなかった場合、適切な応答をするにはどうすればよいですか?カスタム例外をスローする必要がありますか?どちらが正しい方法ですか?
私は小さな石鹸のウェブサービスを持っています。そして、どうすればエラーで対応できるのだろうか。
例えば:
public int createUser(String username) {
//create...
return id;
}
さて、ユーザーを作成できなかった場合、適切な応答をするにはどうすればよいですか?カスタム例外をスローする必要がありますか?どちらが正しい方法ですか?
ここでの正しいアプローチは、例外をSOAP障害に変換することです。
私はSOAPサーバーでこれを行いますが、独自のSoapフォールトを作成しようとして騙されないでください。ランタイム例外をスローするだけで、Soapフォールトに変換されます。
これに関する私の経験では、データクラスとともに返される共通クラスを作成しました。したがって、たとえば、soap応答はCommonOutオブジェクトとResultDataオブジェクトで返されます。CommonOutクラスには、Status、Records Returned、Messageなど、リクエストが良いか悪いかに関係なくデータが入力されるフィールドが含まれています。
インターセプターは、コンテナー内のすべての例外をキャッチし、それらをカスタム形式でラップしてユーザーに返すために使用されます。そうすれば、実際の例外メッセージをキャッチして、独自の形式でラップできます。
実際のエラーメッセージを呼び出し元に返すことの危険性は、例外をキャッチして返される値をオーバーライドしない限り、システムに関する詳細が公開される可能性があることです。
これは、上記のSOAP障害に似ていますが、出力形式をカスタマイズする機能が向上します。