处理数据库错误
问题描述:
我在我的应用程序中使用了一个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;
大多数时候,我觉得这是很好的,因为我可以只让控制器打印错误到屏幕上,从而保持所有的错误代码等...在模型中。但有时这会使代码变得相当混乱和难以处理。
这是处理此类错误的好方法吗?还是有更好/更标准的方法?
答
Fisrt,我会说用户不需要知道问题是数据库,管理员密码还是内存。只需为用户提供技术错误页面,并在服务器上记录错误详细信息,以便进行调试。
对于你所谈论的技术问题,最好是有一个中央处理来管理它们,即抛出错误页面。 通常的地方是控制器的调度员。如果你使用框架,这个机制应该存在(例如symfony)。 这样,您不必在实际代码中混淆这些异常。
就像你发现它一样,最好的策略是只有在你能做些什么的时候才能发现异常。
例如:
- 一个“数据库访问问题”,可以自动地由 调度处理。所以你不要在你的代码中捕获它,让它到 中央处理
- “用户未找到”可能会从你的控制器, 具有特定的待遇,以提出创建例如。所以你抓住它。
php,ruby,java,c#???当前使用php编写的 – leppie
,但我会假设这样的标准做法不会改变语言的语言。 – Obto