例外処理の基本
例外の管理の基本的な考え
プログラムの処理中に発生した例外をまとめて処理するための機能としてHttpApplicationクラスのApplicatoin_Errorメソッドがあります。 この機能を使用することで運用時・開発時に以下のことを実現することができます。
ユーザー向けの処理
ユーザーに対して表示するメッセージは基本的には「ご迷惑をおかけします。しばらくしてから再度アクセスしてみてください。」 といったものになります。ユーザーに詳細なエラーログを表示するのは意味がないばかりではなく、Webサイトへアタックする クラッカーに対して有用な情報を与えてしまいセキュリティの低下を招く恐れもあります。一般的なセオリーとして上記のような メッセージを表示するのが最善の方法ということになります。 上記以外の場合としてユーザーが何かしらのアクションをすることで処理を継続することができる場合は別のメッセージを表示する 場合もあります。例えばデータの登録をしようとした場合に入力したIDが重複してしまいユニークキー例外が出た場合などです。 この場合は「このIDは既に使用されています。別のIDを入力してください。」といったメッセージを表示して処理を継続してもらう ことが可能です。ユーザーに対して表示するメッセージはこの2パターンのどちらかになります。
予期しない例外の処理
発生する例外には2種類あります。予期しない例外とそれ以外の例外です。予期しない例外とはアプリケーションのバグに起因するもの でこれに関してはアプリケーションを修正し例外が発生しないようにする必要があります。予期しない例外のクラス例としては NullReferenceException,ArgumentException,InvalidOperationExceptionなどがあります。予期しない例外に関してはエラーをキャッチ してその例外のクラス名とスタックとレースをイベントログや独自のエラーDBへ記録します。そのログを元にアプリケーションを 修正してプログラムの品質を向上させることができます。
その他の例外の処理
プログラムをどんなにしっかり記述しても回避不能な例外は予期される例外として必要であればtry-catch構文でキャッチして適切に 処理をしたいところです。主にネットワーク接続に関する例外は予期される例外と言えるでしょう。例としてCommunicationException, WebExceptionなどがあげられます。リモートのWEBサイトのRSSを取得して表示するページの場合、リモートのWEBサイトがダウンしている 可能性は0%にはできず結果としてRSSの取得時に例外が発生する確率を0にすることは不可能です。この場合は通常のエラーメッセージ よりも「リモートのサーバーが応答せずデータを取得できませんでした。しばらくしてから再度アクセスしてみてください。」と いったより詳細なメッセージを表示することが可能です。
Create at 2013/4/05 LastUpdate 2013/4/05