在MVC框架中捕获异常的位置

时间:2015-08-05 13:44:38

标签: java php .net pdo frameworks

每个人都在谈论异常处理的重要性。直到最近我才真正需要处理它们:

try { 
    $pdo = new PDO($dns); 
} catch (Exception $e) {
    throw new Exception($e); 
} 

另一个更一般的例子是:

if ($something) {
    throw new Exception('Ouch! I can't do that!');
}

经过一些在线研究后,我发现许多在线示例/解决方案只是回应它们。 (PDO Exception Questions - How to Catch Them)有些人没有解决方案。 (Catching PDOException in lower layer and re-throwing as different exception to upper layer)& (Where to catch exception in PHP MVC application?)和其他人,我只是不明白。 (Where to catch exceptions

问题#1:我应该在哪里捕获例外情况;在 MVC ish框架的模型或控制器中?

问题#2:应该抓住什么?记录,发送电子邮件,显示503?

1 个答案:

答案 0 :(得分:1)

我是一个.net人,也是我捕捉异常的最佳做法:

  • 尽可能晚地抓住它。
  • 编写一个公共代码来捕获异常。
  • 在控制器级别捕获它并使用完整的堆栈跟踪(ETW,日志文件,数据库等)将其记录到某处。
  • 将用户重定向到一些好看的错误页面。只有控制器可以做到这一点。