C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■89820 / )  Re[1]: using のインスタンス生成で例外が発生する場合の処理
□投稿者/ WebSurfer (1719回)-(2019/01/05(Sat) 13:55:35)
No89819 (dogatana さん) に返信

以下の記事によると、

NETの例外処理 Part.1
https://blogs.msdn.microsoft.com/nakama/2008/12/29/net-part-1/

***Quote***
try-catch 命令を書く場合には、業務エラーなどに変換したくない例外を、間違って捕捉しないよう
にしなければなりません。具体的には、以下のようなコードは絶対に書いてはいけません。

・複数行のコードをまとめて try-catch で囲む。
・一般例外(Exception クラス)を catch する。
・catch したあと何もしない。
***Unquote***

・・・ということですので、それに従えば質問者さんが書いたコードは「絶対に書いてはいけません」
という例になってしまいます。

どうすべきかは紹介した記事に書いてありますので興味があれば読んでみてください。

Part. 2 も紹介しておきます。

.NETの例外処理 Part.2
https://blogs.msdn.microsoft.com/nakama/2009/01/02/net-part-2/



紹介した記事に書いてあることをまとめると、以下の通りになると思っています。

(1) 予測可能で正しい業務フローに戻すことができる「業務エラー」(例:ユーザーの入力間違い)と、
  予測できないもしくは予測はできても何の対応もできない「例外」(例:DB サーバーダウン)を
  区別して対処。

(2) 「例外」はランタイムに拾わせてアプリケーションを停止させる。

(3) よほどのことがない限り try-catch は書かない。

(4) キャッチせざるを得ない場合でも Execption はキャッチしない。

(5) 間違って補足してしまった例外は throw する。(注:catch ブロックでキャッチした例外を throw
  するとスタックトレースが途切れるので単に throw と書く)

(6) ユーザーへの通知が必要なら、集約的例外処置を利用する。

あと、.NET 4 からは破損状態例外は catch できなくなっているそうですが、「それでも Catch
(Exception e) を使用するのはよくない」ということについては以下の記事を見てください。

破損状態例外を処理する
https://msdn.microsoft.com/ja-jp/magazine/dd419661.aspx
返信 編集キー/


管理者用

- Child Tree -