使用yii 1.1有时候我发现我的代码中的任何错误(即使是非关键的,如未定义的变量)我的应用程序的工作已经停止并且错误 页面显示,我的网站的所有输出都不可见。如果有办法继续呈现非严重错误的页面? 也许从这里http://www.xdebug.org/docs/basic使用xdebug_start_error_collection和xdebug_get_collected_errors方法?
答案 0 :(得分:1)
执行此操作的能力更多地与PHP的功能和功能相关,而不是Yii。
首先,我想警告这不是一个好主意,因为有时遇到的错误可能会对接下来发生的事情产生影响。 (例如,即使在尝试读取客户记录后发生错误,也可以完成订单。)
正确的方法是处理代码中的所有可能结果。
为了能够捕获意外错误,请使用PHP的try {} catch {}机制。
try {
something_to_do();
}
catch($e){
handle_some_error();
}
continue_processing();
但是,如果您想沿着您的意图继续前进,请查看PHP的错误处理功能,特别是:http://php.net/manual/en/function.set-error-handler.php
特别是,一种好的技术是创建一个错误处理程序,如下面的代码所示。
function HandleErrors() {
$errorDetails = error_get_last();
$ignoreSettings = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_STRICT | E_DEPRECATED | E_USER_DEPRECATED;
print_r($errorDetails);
print_r($ignoreSettings);
if (($errorDetails['type'] & $ignoreSettings) == 0) {
do_things_to_handle_the_error;
}
}
register_shutdown_function('HandleErrors');