functionの中でもDB更新をしていて、PDOのエラーを検知する可能性があります。
呼び出し元でのDB更新部分で検知されるPDOのエラー同様、エラーの取り扱いは呼び出し元で取り扱いたい=呼び出し元で画面構成を行うコーディング部分に活かしたい、と考えています。(呼び出された側で発生したPDOのエラーメッセージを呼び出し元で取得したい)
こういった場合、どういう手続きをとるのが一般的でしょうか?
以下コーディングでは、一般的な例外としてキャッチはできるものの、PDOのエラー詳細まで呼び出し元で取得できないのかな??と思い悩んでいます。
Exceptionクラスの拡張・getPreviousとかいうものを利用してみたかったのですが、よく分からないのでお問い合わせさせて頂きました。
よろしくお願いいたします。
参考を試みたサイト
PHP
1try { 2 3 『DB更新処理①』、グダグダ直接記載 //errorはPDOEceptionでcatch 4 5 if(★DB更新処理②★) != null) { //DB更新処理②は使い勝手よくFunctionにしてる 6 throw new Exception(); //内部ではやはりPDOEceptionでcatchされる 7 } //しかし、呼出し元で上記同様エラー制御をしたい。 8 9 GOTO 正常完了処理へ 10 11} catch (PDOException $e) { 12 error_log('DB更新処理①に失敗'.$e->getMessage(),0); 13} catch (Exception $e) { 14 error_log('DB更新処理②に失敗'.$e->getMessage(),0); 15} 16 17//DB更新処理①でも②でも、エラー目的の処理をここで行う 18//つまりDB更新処理②についても、エラー取扱いは呼出し元で行いたい。 19 20 21function ★DB更新処理②★($conn,~) { 22 try { 23 $errcd = null; 24 『DB更新処理②本質』、グダグダ直接記載 //errorはPDOEceptionでcatch 25 return $errcd; //errorなければnullでかえす 26 27 } catch (PDOException $e) { 28 $errcd = 999; 29 return $errcd; 30 } 31}
何をしたいのかいまいち読み取れませんが、DB接続部分に書かれている try 〜 catch ではなく、接続部分の関数を呼び出している関数のところで catch したいということ?
Kosuke_Shibuyaさんお時間を頂き誠にありがとございます。
function呼び出し元で対応することもDB更新(Aテーブル)、functionの中で対応することもDB更新(Bテーブル)。開発の構成上、Bテーブルの更新がfunctionになっているだけのことで、PDOExceptionが別れて定義されている状態です。Function内でPDO系のエラーが生じても、Function呼び出し元でエラー処理を統一しているので、呼び出し元でfunction内部で生じたPDOexceptionについて参照する(getMesseage)方法を教えて欲しい、ということです。
呼び出し元にfunction内部のPDOExceptionの内容を引き継ぎたい、ということですね。呼び出し元のPDOExceptionと呼び出されるfunction内部のPDOExceptionは、別の次元のイメージがあります。
で、function内部で生じたPDOExceptionを呼び出し元へ どう引き継ぐの?という質問になっています。
回答2件
あなたの回答
tips
プレビュー