- ベストアンサー
エラー処理の方法と書き方
- エラー処理の方法と書き方について説明します。
- プログラムにおいて考えられるエラーケースやエラー処理のポイントについて解説します。
- エラーが発生した場合の運用者への通知方法についても考察します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 エラーが発生した場合、 1) どこでエラーが発生したのか? 2) 何故エラーになったのか? が分かるようにしなければいけません。 従って基本的には、何か処理を行ったらエラーチェックを行い エラーの有無を判断する事になります。 「ファイルの中身が空だった場合」をエラーとするか否かは、 そのプログラムの使い方によると思います。 他に付け加えるとすると 1) ファイルの読み込みに失敗した場合 2) 読み込んだデータ (顧客コード等) が書式に合っていない場合 等があると思います。 エラーの通知方法ですが、プログラムからはエラーログ等を出力するだけ と言うのが多いかと思います。 → エラーログを監視して、管理者にメール等で通知するのは別の監視 プログラムに任せる事で、プログラムの開発量を減らします。 こうする事で、管理者への通知方法が変わっても、メインの プログラムには手を入れないで済みます。 以下、補足と言う事で 1) 「顧客コードをSelect して・・・」と言う部分は、簡略化できます。 無条件にINSERT してみる。 → 主キー (顧客コード) が既に登録されていると、重複キーエラー (ORA-0001) が返るので、この場合Update する。 こうすると、今まで1件データを処理するのに2回のSQL 文が 発行されていたのが、重複キーエラーが発生しなければ 1回 (重複キーエラーが発生した時だけ2回) で済むように なります。 CSV データで、新規追加よりもデータ更新が多いのであれば 「先にUpdate を行って、処理件数が0件であればInsert」 というようにも出来ます。 2) Oracle9i からMERGE 文を使う事で、INSERT/UPDATE の処理を 1つのSQL 文で書く事ができるようになりましたので、これを 使うと、もう少しプログラムが簡潔になります。
お礼
muyoshidさん、ご回答ありがとうございました。 大変参考になりました。 1)の「無条件にinsertする」を使うとかなりパフォーマンスがアップしそうなので今後の課題としますが、エラー処理についてはとりあえずほぼ終了し、無事にプログラムが完成しました。 どうもありがとうございました。