如何在CodeIgniter中进行适当的错误处理?

时间:2013-05-28 18:32:50

标签: php codeigniter error-handling

我正在使用PHP的Codeigniter来构建我的应用程序,我有时觉得我在错误处理方面被淹死了。我在任何可能失败的地方添加“故障”。以下是一些例子:

在模型中:

  1. 如果未提供所有模型方法参数,则返回false
  2. 对于每个mysql查询,如果查询失败,则返回false
  3. 根据具体情况,如果查询的行数是< 1(其中必须是> 0),返回false
  4. 在控制器中:

    1. 如果控制器方法缺少必需参数,则返回false
    2. 如果被叫模型返回false,则重定向并显示错误消息,或显示错误视图
    3. 我想知道的是,我是否过度了?我觉得可能没有必要测试每个mysql查询,但话又说回来,如果其中一个因为某种原因而中断,那么脚本的其余部分将会失败或为用户弄乱。

      最后,在错误处理的所有上述阶段中,将错误记录到文件中哪些位置是合适的?

1 个答案:

答案 0 :(得分:0)

如果你在一个函数中有这么多的返回,你的代码结构很差。那,如果你正在运行原始SQL查询,除非你正在访问元数据,你可能最好转交给模型(CI有的东西)。

对于您的方法,请考虑类型提示。写的东西是:

 function FunctionNameHere($user, $id, $test) {
 }

通过考虑传入User对象可以更好地编写,这允许您这样做:

 function FunctionNameHere(User $user, $test) {
 }

您的所有“错误参数设置”验证将为您做出并将引发错误。

对于SQL查询,请考虑使用模型,这将允许您再次检索对象。没有对象? NULL被返回。问题解决了。

不要返回整数值,而是考虑抛出Exception(并且不要害怕扩展Exception类,然后允许您在不同的块中捕获不同的异常!)。这将允许您整齐地包装代码中的一些常见错误情况(例如向用户抛出一个华而不实的错误框。使用异常完成?检查)。