用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8555|回复: 8
收起左侧

[已解决] 为什么trycatch不能捕捉到Database Error

[复制链接]
发表于 2010-11-4 11:08:50 | 显示全部楼层 |阅读模式
try {

//数据库操作

} catch (Exception $e) {
         echo "123";
}
不管怎么样都显示A Database Error Occurred
Error Number: 1054

而不显示123,我想可能是没有捕捉到错误,

Database Error 如何处理呢?

古人云,路见不平拔刀相助,英雄,你还在等甚呢?
发表于 2010-11-4 11:30:39 | 显示全部楼层
这个错误是 CI 报的,所以无法捕获。
这个错误可以关闭,但你不能接管,除非修改源码。
 楼主| 发表于 2010-11-4 11:57:17 | 显示全部楼层
哦,那么说,try catch 还是捕捉到了error,但是为什么123不能显示呢
发表于 2010-11-4 14:12:34 | 显示全部楼层
try catch 没有捕捉到任何错误,因为不是错误。
只是 CI 的一个提示而已,不是 PHP 错误,所以捕获不到。
发表于 2010-11-4 17:30:00 | 显示全部楼层
如果是用纯PHP。需要自己写TRY CATCH,框架一般都封装好了这些错误提示功能。
发表于 2011-4-5 19:10:45 | 显示全部楼层
唉,搜了一把,搜到这个主题,数据库的异常处理的确有问题,我用ajax处理数据库出错,根本没法给客户端反馈处理失败还是成功的信息,因为只要服务端处理失败(调用了show_error),客户端没法接收出错信息了。

既然2.0版本只支持php5以上,为什么数据库异常处理还是没有改成Exception处理呢?
发表于 2012-3-7 20:50:18 | 显示全部楼层
顶楼上,同问!!干嘛没有改成Exception处理????
发表于 2012-3-8 12:43:27 | 显示全部楼层
ljlyjgr 发表于 2012-3-7 20:50
顶楼上,同问!!干嘛没有改成Exception处理????

我觉得这里应该是和作者的个人喜好有关,因为CI到处都是这种风格的代码。
发表于 2014-12-3 11:37:45 | 显示全部楼层
那么现在问题来了,在不改CI源码的情况下,如何捕获数据库操作异常?

本版积分规则