Forums: Open Discussion (Thread #25107)

エラーハンドリングの方式について (2010-01-14 17:24 by udonsoba0315 #47901)

お世話になっております。

現在TERASOLUNA Client FW for.NET(VB)とTERASOLUNA Server FW for Java (Rich)でシステムを構築しているのですが、エラーハンドリングの方式について悩んでいます。

リッチ版でのエラーハンドリングはExceptionResolverで任意のXML電文を返却すればよいという風に理解しているのですが、これを返却してしまうと.NET側でServerExceptionしか返って来ず、エラー電文を取得できないように思います。(サーバロジックはEventController経由で呼び出ししています)

上のような組み合わせでシステムを構築する場合、一般的にどのようにエラーハンドリングを行うべきか、ご教授いただけないでしょうか。よろしくお願いします。

Reply to #47901×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: エラーハンドリングの方式について (2010-01-15 14:24 by sejimos #47914)

クライアントの通信機能では、HTTPレスポンスを解析し exception ヘッダに設定された値を「エラー種別」
として扱い、エラー種別に応じて処理の振り分けを行います。

・エラー種別が "exception" の場合、ServerExceptionをスローします。
・エラー種別が "validateException" の場合、EventController.execute() の戻り値である ExecutionResult の
ResultString プロパティに "serverValidateException" が設定され、イベント処理が正常終了します。
・エラー種別が、 "exception"、"validateException" 以外の任意の文字列の場合、ResultString プロパティに
その文字列が設定され、イベント処理が正常終了します。

サーバ発生した例外に応じてHTTPレスポンスの exception ヘッダにエラー種別を設定するには、
Bean定義ファイルの SimpleMappingExceptionResolverEx の定義の entry 要素において、
ハンドリングしたい例外を指定します。
value要素の第二引数に設定した値がエラー種別として設定されます。

以下、Bean定義ファイルのサンプルになります。

<!-- ==================== 例外ハンドラの定義 ===================== -->
<bean id="handlerExceptionResolver"
class="jp.terasoluna.fw.web.rich.springmvc.servlet.handler.SimpleMappingExceptionResolverEx">
<property name="linkedExceptionMappings">
<map>
・・・省略・・・
<entry key="jp.terasoluna.fw.service.rich.exception.ServiceException">
<value>serviceException,serviceException</value>
</entry> ↑
・・・省略・・・ 「エラー種別」
</map>
</property>
・・・省略・・・
</bean>
Reply to #47901

Reply to #47914×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: エラーハンドリングの方式について (2010-01-15 19:19 by udonsoba0315 #47919)

クライアント側ではresult.Errorsの中身を見て処理を振り分けるという形になるのでしょうか?
デバッグでは見えているのでこのまま進めてみます。

対応ありがとうございました。
Reply to #47901

Reply to #47919×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: エラーハンドリングの方式について (2010-01-15 20:24 by Anonymous #47920)

> クライアント側ではresult.Errorsの中身を見て処理を振り分けるという形になるのでしょうか?
ご理解いただいている通りです。

ExecutionResultのResultStringプロパティにはエラータイプを示す文字列が格納され、
Errorsプロパティには具体的なエラー内容が格納されますので、Errorsの中身をみて処理を振り分けてください。
Reply to #47919

Reply to #47920×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login