处理数据库错误

时间:2011-10-12 05:02:33

标签: database model-view-controller exception

我在我的应用程序中使用MVC框架,因此当我在模型中使用数据库时检测到错误时,我将异常抛回控制器。

//db querying
//doing more db querying...
if (error)
    throw new ApiException('Unable to connect to User database', 1, 500);
else if (another type of error)
    throw new StampApiException('Could not retrieve the User', 12, 500);

return $user;

大多数时候我发现这很好,因为我可以让控制器将错误打印到屏幕上,从而保留模型中的所有错误代码等。但有时候这可能会使代码变得非常混乱和难以处理。

这是处理此类错误的好方法吗?还是有更好/更标准的方式?

1 个答案:

答案 0 :(得分:1)

Fisrt,我想说用户不需要知道问题是数据库,管理员密码还是内存。只需为用户提供技术错误页面,并在服务器上记录错误详细信息,以便进行调试。

对于您所谈论的技术问题,最好是采用集中处理来管理它们,即抛出错误页面。 通常的地方是控制器的调度员。如果您正在使用框架,则应该存在此机制(例如,symfony)。 这样,您就不必在实际代码中弄乱这些异常。

就像你发现它一样,最好的策略是只有在你可以做些什么的时候才能捕获异常。

例如:

  • “数据库访问问题”可以自动处理 调度员。所以你没有在你的代码中捕获它,让它到了 中央治疗
  • “未找到用户”可能会对您的控制器进行特定处理, 以提议创造为例。所以你抓住了它。