質問: お世話になっております。 visual studio 2010以降における例外処理について質問です。 現在、業務アプリケーションを作成しております。 各メソッド毎にtry catch finalyの処理を記述して例外対応を行っておりますが、 冗長な記述と感じており、なにか他の手法で例外を拾う手段をご存知の方いらっしゃいましたらご教授願います。
回答: > > 各メソッド毎にtry catch finalyの処理を記述して例外対応を行っておりますが、 > > > 全てのメソッドでやるべきではありません。 catch処理/finally処理が必要なところだけで十分です。 また見かけるコードで、catchして(エラー処理せずに)再throwしていなかったり ``` try{ // なにか処理 }catch(Exception ex){ throw ex; } ``` というthrowを意図せず書いている場合はバグです。 (後者はそこが例外の起点になってしまいます。) 単に上位に伝搬したいだけであれば以下の様に throwだけ書いてください。 ``` try{ // なにか処理 }catch(Exception ex){ throw; } ``` catchブロックで別の例外に切り替えたいときは ``` throw new XXException("message", ex); ``` の様にinnerExceptionに元の例外を指定してください。 ApplicationやThreadの未処理例外をハンドルする機構(AppDomainのUnhandledExceptionなど)はありますが、個人的にはそれだけで対処するのはいただけないと思っています。 また、保護機構として利用するにしても catchやfinallyが必要な場面は変わりませんし、 それを使う事で省略可能なtryブロックならそもそも必要なかったということです。