(私は実際にEktron CMSを使用しWidgets
ており、ユーザーコントロールの非常に単純な拡張であるを使用しています)。
問題:多くのウィジェットを含むWebページがあります。これらのウィジェットのいずれかで例外が発生すると、ページが停止し、ユーザーにサーバーエラーが発生します。ウィジェットに未処理の例外を設定して、例外をログに記録し、そのウィジェットの表示を停止して、ページを続行できるようにしたいと思います。
たとえば、各ページに天気ウィジェットがあり、Webサービスを介してデータを取得します。Webサービスから不正な形式のXMLが送信された場合でも、そのサイトを引き続き利用できるようにする必要があります。
考えられる解決策:
計画A)各ウィジェット内で、initまたはdisplay関数のコンテンツをTry-Catchステートメントでラップします。
プランB) IWidgetを拡張する新しいIRobustWidgetインターフェースを作成し、そこでTry-Catchを実行します。
catch (exception)
一般的なステートメントは少しアンチパターンであると読んだので、これらのオプションはどちらも私には少し「汚い」ように見えます。これはよりモジュール化されているように見えるので、私はプランBに傾いています。
- 他のオプションを逃したことがありますか?
- この点で、一般的なTry-Catchは問題ありませんか?