【发布时间】:2017-02-19 21:06:42
【问题描述】:
我正在尝试在事务中捕获数据库错误,如果发生错误,则回滚并抛出异常。
但是,代码在引发异常之前会停止并显示 db 错误屏幕。
有什么想法可以让它在不停止运行后续代码的情况下检测 db 错误吗?
try {
$this->my_function($data);
} catch (Exception $e) {
var_dump($e);
}
private function my_function($data)
{
$this->db->trans_start();
foreach($data as $reg)
{
$sql = $this->db->insert_string('my_table', $reg);
if($this->db->query($sql))
{
continue;
} else {
$this->db->trans_rollback();
throw new Exception('Exception message here...');
}
}
$this->db->trans_complete();
}
【问题讨论】:
-
在引发异常之前屏幕上显示的错误是什么?
-
我故意拼错列名以造成错误
-
这是预期行为。错误发生时立即显示。如果条件在那之后执行
-
那么有什么方法可以产生我想要的结果吗?
-
你应该 handle exception 来控制错误消息。但是 codeigniter 提供了更好的方法来做到这一点见
trans_status()codeigniter.com/user_guide/database/transactions.html.but 如果你不处理它仍然会显示错误
标签: php codeigniter exception