- PR -

【ASP.NET】クラス内で発生したエラーの捕らえ方

投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-30 09:06
Jittaさん、おはようございます。
引用:

Jittaさんの書き込み (2006-03-29 22:47) より:

やっぱり、この名言を出さないわけにはいかないでしょう。
むやみにキャッチしないでね。ゴールキーパー以外はハンドで反則ですよ。


早速、読ませていただきました。結構、衝撃的事実なんですけど(^_^;)

.NET 初心者なので、入門書やネットを見ながらコードを書いているんですが、当然のごとく、「例外は、Try 〜 Catch 〜」での通り記述しています(;_;)
VS.NET(VB.NET)の場合、「Try」と記述し、リターンキーを押すと勝手に Catch句は自動で書いてくれるという親切(?)を利用しています。

明確には言えないとは思いますが、どの辺で発生都度キャッチすべき例外と一括(Application_Error に任せる)でキャッチすべき例外とを区別したら良いのでしょうか。一般論でも良いので、教えていただけると助かります。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-30 09:11
引用:

ひろれいさんの書き込み (2006-03-30 09:06) より:

明確には言えないとは思いますが、どの辺で発生都度キャッチすべき例外と一括(Application_Error に任せる)でキャッチすべき例外とを区別したら良いのでしょうか。
一般論でも良いので、教えていただけると助かります。


リンク先にもそのあたりは間接的に触れているかと思います。
私もひとつ前のレスで、

> 本当に予期しない例外は「業務続行不可能」な例外なので、
> Application.ThreadException にお任せした方が良いです。
> 臨機応変ではありますが、予期しないものは何もしない方が良いです。

と既に書かせて頂いております。
ちょっと書き方がまずかったかもしれませんね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-30 09:17
手前味噌ですが…
例外をインターセプトすべきか
_________________
囚人のジレンマな日々
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-30 09:39
じゃんぬさん、囚人さん、お返事ありがとうございます。
引用:

囚人さんの書き込み (2006-03-30 09:17) より:

手前味噌ですが…
例外をインターセプトすべきか


分かりやすいですね。みなさんがご自分の考えをコメントしているのも大変参考になります。
開発時に、このような問題に気付けて良かったです。運用後だったら・・・

個人的には、業務的なエラーはキャッチし、それ以外のシステム的なエラーやバグは一括で管理しようかな、と考えております。

引用:

リンク先にもそのあたりは間接的に触れているかと思います。
私もひとつ前のレスで、

> 本当に予期しない例外は「業務続行不可能」な例外なので、
> Application.ThreadException にお任せした方が良いです。
> 臨機応変ではありますが、予期しないものは何もしない方が良いです。

と既に書かせて頂いております。
ちょっと書き方がまずかったかもしれませんね。


すいません。何気に Throw してましたね(^_^;)
初心者なもので、事の重大さに気付けませんでした。
ゴールキーパー失格ですm(_ _)m
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-03-30 10:15
メソッドを Shared にしているのが何気に気になる。

# 気にし過ぎかな...
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-30 10:22
引用:

えんぞ@?さんの書き込み (2006-03-30 10:15) より:

メソッドを Shared にしているのが何気に気になる。
# 気にし過ぎかな...


例にある DBAccess クラスには資源となりえるデータが何もないですし、
メソッド内で解決しているので、インスタンス メンバである必要はないですね。

ただの抜粋かもしれませんけど。(そこまでは読めません...)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-03-30 10:40
引用:

じゃんぬねっとさんの書き込み (2006-03-30 10:22) より:

メソッド内で解決しているので、インスタンス メンバである必要はないですね。


ふむ。
この辺自分の勉強不足にて申し訳ないのですが、メソッドを Shared にした場合、メソッド内にて定義されている変数は Shared とはならないでしょうか?

# スレ脱線失礼

[追記]
とよくよく考えたら...ならない...か。

[ メッセージ編集済み 編集者: えんぞ@? 編集日時 2006-03-30 10:45 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-30 11:30
引用:

えんぞ@?さんの書き込み (2006-03-30 10:40) より:

この辺自分の勉強不足にて申し訳ないのですが、メソッドを Shared にした場合、
メソッド内にて定義されている変数は Shared とはならないでしょうか?


すみません、意味がちょっと理解できていないかもしれません。
メソッド内の変数はローカル変数ですよね。

メソッドがインスタンス メンバであろうと共有メンバであろうと、
もとから別領域に展開されるものですから関係ないと思います。

でなければ、VB のモジュール (StandardModuleAttribute な Class) が大変な事態になります。(;^-^)

もしかして、旧 VB のプロシージャに Static を修飾することと混同していますか?
あれは、ローカル変数に Static がついている動作になります。
C# が static であるのに対し VB が Shared になったのはこのあたりの理由でしょうけど。

それとも、スレッド セーフ関係の心配なのでしょうか?
そうであれば、むしろ選択は逆になるので違うと踏みましたが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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