2004年12月22日

try-catch-finallyについて考える(5)

   このエントリーをはてなブックマークに追加 Clip to Evernote
さて、前回の結論は、try-catch-finally という構文が用意されているますが、finally処理と例外処理は、対象としているものが異なるため、
   try {
// ...
} catch {
// ...
} finally {
// ...
}
と書ける場面は、それほど多くは無い、ということでした。
それと、 「finally処理に対応する初期処理は、try ブロックの中に入れてしまう」ルールは、usingを導入することで、不要なルールとなりました。
で、再度、ソースコードを見て見ると、あることに気が付きました。もう少し、例外の補足範囲を広げて見たら、同じ構造になりそうだ、ということです。修正したコードは次のとおり。
    try {
using ( SqlConnection conn = new SqlConnection(strconn) ) {
conn.Open();
// 処理
}
} catch ( SqlException ex ) {
MessageBox.Show(ex.Message);
}

    try {
SqlCommand cmd = new SqlCommand(sqltext,conn);
using ( SqlDataReader dr = cmd.ExecuteReader() ) {
//
}
} catch ( SqlException ex ) {
MessageBox.Show(ex.Message);
}

これなら、 見た目も同じ構造になり、try-catchに統一感を持たせられますの
で、コーディングする際も、悩む必要がなさそうです。
なお、集約例外ハンドラーをどう活用するか、継続不能な例外発生時にどう対
応するかなどの「例外処理の指針」をその前に決めておく必要があるのは言う
までもありません。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/11170341
この記事へのトラックバック
斬られたい、または斬って欲しいブログ募集
募集中です【ブログハンター】at 2004年12月22日 21:40