• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エラー処理の方法と書き方)

エラー処理の方法と書き方

このQ&Aのポイント
  • エラー処理の方法と書き方について説明します。
  • プログラムにおいて考えられるエラーケースやエラー処理のポイントについて解説します。
  • エラーが発生した場合の運用者への通知方法についても考察します。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.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 文で書く事ができるようになりましたので、これを    使うと、もう少しプログラムが簡潔になります。

rio_grande
質問者

お礼

muyoshidさん、ご回答ありがとうございました。 大変参考になりました。 1)の「無条件にinsertする」を使うとかなりパフォーマンスがアップしそうなので今後の課題としますが、エラー処理についてはとりあえずほぼ終了し、無事にプログラムが完成しました。 どうもありがとうございました。