/** * 框架调用:异常统一处理,并且根据配置决定处理方式 * * @param object $exception */ public static function _exception($exception) { // APP的配置 $appCfg = QP_Sys::getAppCfg(); // 得到异常代码 $code = $exception->getCode(); // 永远抛出的异常 $allowException = array(QP_Exception::EXCEPTION_NO_CONTROLLER, QP_Exception::EXCEPTION_NO_ACTION); // 如果设置为显示异常 或 为永远抛出的异常则调用 Error 控制器 if (in_array($code, $allowException) || $appCfg['display_exception']) { // 调用 ErrorController 并且执行它 require APPLICATION_PATH . '/Controllers/ErrorController.php'; $errorController = new ErrorController(); $errorController->init(); $errorController->errorAction($exception); // 是否自动解析视图 if ($errorController->viewIsAutoRender()) { $errorController->view->setPath('Error'); echo $errorController->view->render('Error.html'); } } else { // 写日志 $msg = 'Exception Message:' . $exception->getMessage() . PHP_EOL; $msg .= 'Stack Trace:' . $exception->getTraceAsString() . PHP_EOL; self::log($msg, 'app'); } }
/** * Funkce pro vygenerování chybové stránky */ public function generateError($errorCode, $text) { $controller = new ErrorController(); $controller->errorCode = $errorCode; $controller->errorMessage = $text; $controller->errorAction(); $controller->display(); exit; }