- PR -

例外処理の書き方について

投稿者投稿内容
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-10-21 15:17
こんにちは。
引用:

あや☆さんの書き込み (2005-10-21 10:57) より:
現在のソースには、データベース関連の処理やファイル操作など、明らかに例外の発生する可能性がある場所は、try-catchで例外処理を記述しているのですが、
実際には開発者にとって想定外の例外が発生することもあると思います。(メモリ不足とか?)
全てのソースをtryで囲み、catch(Exception)するのが、一番確実だとは思うのですが、
いいプログラムとは言えない気がします。


えーと、個人的な方針を書きます。
[厳守事項]
・むやみやたらにcatchしない。特に、明確な理由もなくcatch(Exception)しない。
※作成するアプリケーションの最外部層に限り、catchしても良い場合あり。
・catchしたException情報を、絶対に隠滅しない。
・別のExcepionを再throwするときは、InnerExceptionにcatchしたExceptionをセットする。

[推奨事項]
・カスタム例外を自作するときは、ApplicationExceptionから派生させる。
 その際、InnerExceptionを引数に持つコンストラクタメソッドも忘れず作成。
・例外に設定するメッセージは、クラスの利用者に向けたメッセージにする。
 エンドユーザに向けるメッセージは設定しない。
・ログ出力等を目的としてcatchした場合、ログ出力後には、
 受け取った例外をそのままthrowする。

大体こんな感じでやってます。
Webアプリの例外処理については、皆さんと同じだったので安心しました
あや☆
常連さん
会議室デビュー日: 2005/07/28
投稿数: 36
投稿日時: 2005-10-21 17:09
NAL-6295さん、葉瀬崎浩樹さん、返信ありがとうございました。
参考にさせていただきました。

Application_Errorイベントにエラーページへ遷移するソースを書き、とりあえずエラーがでた時はに、エラーページを表示させることができました。

引用;-------------------------------------------------------------

2.デバック時はセッションにエラー情報を保持

------------------------------------------------------------------------
というのの方法が分かりません。
エラーページに遷移する前に、デバッグにエラーの内容を記述したいのですが、どのように書けばいいのですか?
すいませんが、教えていただけませんか?
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-10-21 17:28
引用:

あや☆さんの書き込み (2005-10-21 17:09) より:
引用;-------------------------------------------------------------

2.デバック時はセッションにエラー情報を保持

------------------------------------------------------------------------
というのの方法が分かりません。
エラーページに遷移する前に、デバッグにエラーの内容を記述したいのですが、どのように書けばいいのですか?
すいませんが、教えていただけませんか?



私の場合は
例外情報を文字列型のメッセージに整形した上で、
Session.Add(任意のキー,整形したメッセージ)
といった感じにセッションに追加しています。
そして、そのセッションの内容をエラー遷移先のページで表示しています。
(デバック時のみですが。)

ちなみにデバック時、リリース時に関係なく、イベントログには整形したメッセージを登録しています。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
あや☆
常連さん
会議室デビュー日: 2005/07/28
投稿数: 36
投稿日時: 2005-10-21 18:42
NAL-6295さん、返信ありがとうございました。
エラーが出たらエラーページに遷移し、
エラー内容はデバッグに出力するようなソースを書くことができました。

返信くださったみなさま、大変ありがとうございました。

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