- - PR -
catch句内の例外処理
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-11 06:19
} catch { // これで、全例外をキャッチ
rollcback 処理 throw; // throw だけ。再投する } で、application.Run をしているところを try 〜 catch で囲って、そこでロギング。 | ||||||||
|
投稿日時: 2006-04-11 07:40
これは、良くない例だと言われていたような... それに、「Rollback で例外が発生したら」で考えた場合ロギング上の都合は変わらなくないですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-11 07:43
ロギング用のコンポーネントなどは使わないのですね。
例外が発生したことによって派生してしまった例外だと思えばそれでも良いかもしれません。 ログに何を吐くかにも因りますけど、本来の目的で考えれば必要がないように思えます。 むしろ、スタックトレースなどの方が役に立ちそうです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-11 09:55
ロギングの方式決定はなるべく早くしたほうがいいですよ。後になればなるほど追加するのが大変になりますし、ロギングコンポーネントの呼び出し方にブレが生じる原因となります。それに何よりデバッグに役立ちます。 | ||||||||
|
投稿日時: 2006-04-11 11:34
邪道どころか、私はこれこそ王道と思って使ってます。 ログに例外を書くためには、一回catchしなければなりません。 しかし、catchするとそこで例外が止まってしまうので、処理続行不可能なら再throwしなければなりません。 しかし、InnerExceptionを使わずに再throwすると、例外の発生元がそこに置き換わってしまう。 なので、InnerExceptionを使って再throwするのですが、もし発生した時点でログに記録すると、 一番外側のエラーハンドラで記録したログのInnerExceptionの内容とかぶってしまい、勿体無い。 てことで、私の場合InnerExceptionに詰め込んで一番外側のエラーハンドラでのみログに記録しています。 | ||||||||
|
投稿日時: 2006-04-11 11:45
throw e; 形式でなく throw; 形式にすれば、例外を覗き見しているだけで、発生元は変わらないようです。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-04-11 11:54
知らなかった orz 勉強になりました。 | ||||||||
|
投稿日時: 2006-04-11 17:23
ひろれいさんがリンクしてくださったスレと同じ流れですねw
クラス内で発生したエラーの捕らえ方 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |