- PR -

多数の例外が発生するメソッドのcatch

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-23 21:55
 Java と .NET の、例外に関する決定的な違いがあります。
 Java の、「検査例外」が、.NET にはありません。.NET の出す例外は、本当に例外的な状況、Error なのです。

 したがって、「検査例外に読み替えたい場合を除いてキャッチしない」が、回答となります。
このスレッドが参考になると思います。
 『ASP.NET エンタープライズ アプリケーション開発大全』の、何巻目かにも、同じようなことが書いてあります。


> 例として「Activator.CreateInstance」をあげてみますが
ArgumentException, NotSupportedException, TargetInvocationException は、こんなのが発生したら、次の処理なんてとても出来ないですよね。だからキャッチしない。
ArgumentNullException, MethodAccessException, MemberAccessException, MissingMethodException, NotSupportedException, TypeLoadException は、開発時にしか出てはいけないですよね。だからキャッチしない&潰しておく。
InvalidComObjectException, COMException は、COM でないなら出ることはないので放っておいて大丈夫。

で、下の方に「ReflectionPermission (すべての型のメンバに対して操作を呼び出すために必要なアクセス許可)」とあるので、セキュリティ系の例外が発生する可能性もあります。これも、テスト中に潰しておくべき例外です。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-24 09:02
むぅ、例外は深いですね。

囚人さん、NAL-6295さん。定石情報ありがとうございます。
大変、参考になります。

> したがって、「検査例外に読み替えたい場合を除いてキャッチしない」が、回答となります。
この方針、良いですね!、基本的にこれでいこうかと思います。

文法的には書けても、.NETで例外をどう扱うかは別次元問題ですね。
(方針、定石、プロジェクトルールとかそういう世界?)
みなさんのおかげで、例外についての知識が深まりました。ありがとうございます。

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