使yii 1.1 contunie处理非非关键错误

时间:2014-08-17 04:55:44

标签: php yii xdebug

使用yii 1.1有时候我发现我的代码中的任何错误(即使是非关键的,如未定义的变量)我的应用程序的工作已经停止并且错误 页面显示,我的网站的所有输出都不可见。如果有办法继续呈现非严重错误的页面? 也许从这里http://www.xdebug.org/docs/basic使用xdebug_start_error_collection和xdebug_get_collected_errors方法?

1 个答案:

答案 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');