【发布时间】:2014-12-16 14:37:51
【问题描述】:
Slim 框架很好 - 非常好。我遇到的问题之一是它处理错误的方式。在原版 PHP 代码中,我偶尔会使用 trigger_error 语句作为调试辅助。在原版 PHP 中,这没有不良后果,因为默认情况下 trigger_errors 是 E_USER_NOTICE 类型的错误,不会阻止脚本死在其轨道上。然而,在 Slim 中,事情似乎有所不同。一个良性的 trigger_error 会导致它抛出一个 wobbly 并返回一个 HTTP 500。
我认为这可以通过以下方式纠正
- 将 模式 更改为开发或其他方式,但文档声明这对 Slim 内部的工作方式没有任何影响。
-
下一个调用端口 - 更改苗条错误日志记录级别
$app = new \Slim\Slim(array('log.level' => \Slim\Log::ERROR);
与 PHP 的 error_reporting 效果不太一样。设置它会阻止错误浮动到 error.log 文件(Slim 使用的默认错误记录器),但至关重要的是它不会停止 HTTP 500。
我遇到过建议替换默认 Slim::handleErrors 方法的论坛帖子。这很容易,但我想知道这是否不正确。当 Slim 遇到完全无害的 trigger_error 时,阻止 Slim 死机的正确方法是什么?我可以很好地避免这种情况,但我可能会依赖其他可能包含此类语句的代码。非常感谢任何帮助
【问题讨论】:
-
嗨,你使用'debug'标志吗?
-
如何将 trigger_error 放在 try/catch 块中? docs.slimframework.com/#Route-Helpers
-
@ruifn - 只是改变 Slim 模式 - 甚至没有调试 - 什么都不做。引用 Slim 手册 - Slim 将错误转换为 ErrorException 实例......如果启用调试,Slim 将使用其内置的错误处理程序来显示未捕获异常的诊断信息。如果调试被禁用,Slim 将改为调用您的自定义错误处理程序,将其他未捕获的异常作为其第一个也是唯一的参数传递给它。