- - PR -
例外の設定位置について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-20 09:15
お世話になります。
C#2005でWindowsアプリを作成しています(DBにOracle8.1.7を使用)。 下記のようなクラスを作成し、DBへのアクセスを行っていますが、 例外の設定はどのあたりにするものなんでしょうか? public class DB_ACCESS { public int DATA_CHECK(string code) { int リターンコード; コネクション設定; SQLコマンド作成; パラメータ設定; データアダプタ設定; データセットに読み込み; if データあり リターンコード = 0; else リターンコード = -1; return リターンコード } } public class Form1:Form { private void btnCheck_Click(object sender, EventArgs e) { DB_ACCESS da = new DB_ACCESS(); int リターンコード = da.DATA_CHECK(txtCode.Text); if リターンコード = 0 MessageBox.Show("該当データあり"); else MessageBox.Show("該当データなし"); } } 「DATA_CHECK」メッソッドの中で例外処理を行うのか、「Form1」で例外処理を 行ったほうがいいのか悩んでいます。 「DATA_CHECK」メッソッドで例外処理をして、エラーコードをリターンコードに セットして返したほうがいいのかなぁとも思いますが、皆さんはどのようにされていますか? ご意見をお聞かせください。 | ||||||||||||
|
投稿日時: 2006-06-20 10:08
Form側に一票。
DATA_CHECKメソッドの戻り値はデータの有無だけにして(boolの方が良い?) Form側で例外を捕まえる方が分かり易いと思います。 こんな感じ?
あと、DATA_CHECKメソッド内でもfinally句でDB接続を閉じたり。 | ||||||||||||
|
投稿日時: 2006-06-20 10:09
例外が想定できるところですね。 または例外が発生した時に、'特別' 何かをしなければならないところに '狭く' 配置します。 想定できないものは、処理続行不可能な例外にあたるので、必ずしも設定する必要はありません。 Application.ThreadException などで、ログ出力やエラー報告くらいはしますけど。 # と書くと、"むやみにキャッチしないでね~" を貼られそうw _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-06-20 10:46
オブジェクトの性質によりそれぞれの「返値」と「返す例外」をまず定義したほうがよいのではないでしょうか。 #その結果、利用者の振る舞いが決まる いずれにしろ、例外(エラー)の上位への連鎖方法は悩みますね。 | ||||||||||||
|
投稿日時: 2006-06-20 11:11
なわけで今回は何かをした後に再スローかねぇ。 | ||||||||||||
|
投稿日時: 2006-06-20 13:25
皆さん、ご意見ありがとうございます。
「Select」だけとかだと、特に必要ないんでしょうか。 DBの更新を行うような場合だと、トランザクションを考えるとメッソド内の方がよかったりするんでしょうか? こんな感じ? public class DB_ACCESS { public int DB更新(DataSet ds) { int リターンコード; Try { コネクション設定; SQLコマンド作成; パラメータ設定; データアダプタ設定; トランザクション開始; DB更新; コミット; } リターンコード = 0; catch(OracleException ex) { ロールバック; リターンコード = ex.Code; } return リターンコード } } | ||||||||||||
|
投稿日時: 2006-06-20 14:08
を重視してForm側で例外処理としたわけですが サンプルとは異なり実際のプログラムでは多様な処理を下位クラスで行う事になるので 各々適切な例外処理を行い且つ例外を握り潰さない為には
と云う事になるのだろうか 追加
返り血は本来の目的にだけ使用して他の意味を持たせない方が単純でよろしいかと思います。 例外は再投して呼び元で捕け止めてあげましょう。 [ メッセージ編集済み 編集者: Yam 編集日時 2006-06-20 14:19 ] |
1