CodeIgniterでデータベース更新処理等でエラーが発生した場合の挙動

CodeIgniterを使って開発していて、データベース処理でエラーがでたときに、Database error: A Database Error Occurred ...と出力された。このとき、該当のデータベース処理以降の処理はどうなるのだろうか?
 

database.phpの設定で動作が変わる

application/config/database.php'db_debug'trueを設定していると、エラーが発生した時点で処理終了となる。デフォルトの設定のまま使っていると、この値はtrueだと思う。試しに、以下のコードを実行してみると、log_message()で指定したログは出力されない。

確認プログラム

'db_debug'falseを設定すると、エラーが発生しても、処理終了とならず、続行する。例えば、上の確認プログラムを実行した場合は、ちゃんとログが出力される。
 

エラー内容を取得する

それでは、'db_debug'false設定した場合、エラー内容はどうやって拾えば良いのだろうか。これは、$this->db->error()で、取得できる。返り値は配列となっている。

取得例:

["code"]=>
int(1062)
["message"]=>
string(45) "Duplicate entry 'ID123456789' for key 'PRIMARY'"

 

エラー処理

ってことで、最終的にこんな形にした。