- PR -

Webサービス側の例外をクライアントで取得

1
投稿者投稿内容
ゆうっち
会議室デビュー日: 2005/12/13
投稿数: 5
投稿日時: 2005-12-14 09:57
Webサービスを作成中ですがサーバ側で例外が発生した場合throwして
クライアント側でキャッチ時にExceptionより自作オブジェクト内容
(例外を継承したクラスに自作Object等をもたせたクラス)の内容を取得したい
のですが方法がわかりません。

実行したところエラーメッセージのみ取得できているようです。

どなたか知っていましたらご教授ください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-14 10:04
誤爆しました。。。

[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2005-12-14 12:24 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-14 11:15
こんにちは。

Web サービスの呼び出しで発生した例外は、全て「SoapException」としてクライアントは処理しまいます。メッセージはこの SoapException に載せられています。

なので、例外の種類によって処理を分ける、という事ができません。
そもそもクライアントが例外処理できる処理系かどうかも分からないので、Web サービスからは例外をスローしないのが宜しいらしいです。

エラーコードを返す、エラーメッセージを返す、フラグの塊を返す等を行い、クライアントがそれを判断し(ラッパー等を作成しても良いかも)、そこで例外をスローするなり、フラグで判断し処理を振り分けるしかないですね。

_________________
囚人のジレンマな日々
ryuuji
ベテラン
会議室デビュー日: 2003/07/10
投稿数: 53
お住まい・勤務地: 東京都
投稿日時: 2005-12-14 12:57
SoapException.Detailにサーバ例外情報をXML形式で乗っける方法があります。以下のようなSoapExceptionの派生クラスを作ってやっています。

コード:
[Serializable]
class MySoapException : SoapException
{
    public MySoapException(string message, MyException e)
        base : (message, 
                SoapException.ServerFaultCode,
                string.Empty,
                e.GenerateXml())
    {
          // 省略
    }
    
    public MyException MyExceptionAtServer
    {
        get { return MyException.Parse(base.Detail); }
    }
}

1

スキルアップ/キャリアアップ(JOB@IT)