0

(私は実際にEktron CMSを使用しWidgetsており、ユーザーコントロールの非常に単純な拡張であるを使用しています)。

問題:多くのウィジェットを含むWebページがあります。これらのウィジェットのいずれかで例外が発生すると、ページが停止し、ユーザーにサーバーエラーが発生します。ウィジェットに未処理の例外を設定して、例外をログに記録し、そのウィジェットの表示を停止して、ページを続行できるようにしたいと思います。

たとえば、各ページに天気ウィジェットがあり、Webサービスを介してデータを取得します。Webサービスから不正な形式のXMLが送信された場合でも、そのサイトを引き続き利用できるようにする必要があります。

考えられる解決策:
計画A)各ウィジェット内で、initまたはdisplay関数のコンテンツをTry-Catchステートメントでラップします。
プランB) IWidgetを拡張する新しいIRobustWidgetインターフェースを作成し、そこでTry-Catchを実行します。

catch (exception)一般的なステートメントは少しアンチパターンであると読んだので、これらのオプションはどちらも私には少し「汚い」ように見えます。これはよりモジュール化されているように見えるので、私はプランBに傾いています。

  • 他のオプションを逃したことがありますか?
  • この点で、一般的なTry-Catchは問題ありませんか?


(私はこれをEktronフォーラムにも記録しました)

4

2 に答える 2

2

Web サービスを介してデータをロードしているという事実は、このデータを ajax-loaded<div>または<iframe>;のいずれかを介して非同期でロードする必要があるかどうか疑問に思います。つまり、ウィジェットは別々のリクエストでダウンロードされます。これにより、次の 2 つの利点が得られます。

  • コア ページは、データを取得することによってまったく遅延ません。メイン ページがロードされた後、短時間ロードする必要があります。
  • パネルの読み込みに失敗した場合....まあ(あると便利だが重要ではない場合)

不利な点は追加のラウンドトリップですが、他のすべての状況と比較すると、必ずしも問題になるわけではありません。

于 2010-11-02T11:36:56.377 に答える
0

私がしたことを見つけまし た - ASP.NET UserControls で未処理の例外をキャッチする

また、注目すべきイベント (Render、Load、またはカスタム SetDisplay 関数) を決定する必要があることも認識しています。

于 2010-11-03T00:34:33.260 に答える