Aka*_* KC 3 php exception-handling codeigniter codeigniter-2
最近,我正在学习PHP用CodeIgniter框架.我正在处理异常处理但有一件事让我感到惊讶的是,db_debug = TRUE在database.php设置中,异常处理不适用于数据库错误.
如果db_debug = FALSE,我可以抛出并捕获错误,但是当它出现时TRUE,它会直接显示包含数据库错误的页面.
这是我的代码:
在Model:
$this->db->insert('tbl_name',$data);
if (strpos($this->db->_error_message(),'constraint_name') !== FALSE)
{
throw new UniqueConstraintException($this->db->_error_message()); // UniqueConstraintException is customized excpetion
}
Run Code Online (Sandbox Code Playgroud)
在Controller:
try
{
//calling the method from model having above code
}
catch(UniqueConstraintException $ex)
{
echo "There is already item with same item name";
}
catch(Exception $ex)
{
echo $ex->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
即使有db_debug = TRUE设置,我可以在数据库错误上实现异常处理吗?
Fra*_*ois 10
CodeIgniter的人对oop一无所知.当你查看代码时,你会在数据库驱动程序中找到这样的事情一百万次(也不知道任何关于DRY的事情):
if (<some condition>) {
if ($this->db_debug) {
log_message('error', 'Invalid query: '.$sql);
return $this->display_error('db_invalid_query');
}
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
所以不,你不能禁用这个"功能".但是你可以扩展 CI_DB_driver 类以解决这个问题,但是由于缺少DRY代码,你必须覆盖这个类的几乎所有内容......
| 归档时间: |
|
| 查看次数: |
7533 次 |
| 最近记录: |