我在我的应用程序中使用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;
大多数时候我发现这很好,因为我可以让控制器将错误打印到屏幕上,从而保留模型中的所有错误代码等。但有时候这可能会使代码变得非常混乱和难以处理。
这是处理此类错误的好方法吗?还是有更好/更标准的方式?
答案 0 :(得分:1)
Fisrt,我想说用户不需要知道问题是数据库,管理员密码还是内存。只需为用户提供技术错误页面,并在服务器上记录错误详细信息,以便进行调试。
对于您所谈论的技术问题,最好是采用集中处理来管理它们,即抛出错误页面。 通常的地方是控制器的调度员。如果您正在使用框架,则应该存在此机制(例如,symfony)。 这样,您就不必在实际代码中弄乱这些异常。
就像你发现它一样,最好的策略是只有在你可以做些什么的时候才能捕获异常。
例如: