/**
  * 应用启动运行的函数
  * 
  * @access public
  * @return mixed
  */
 public function run()
 {
     //实现对Application的扩展
     Tiny::$_iserror = true;
     $appExtension = ExtensionFactory::getFactory('appExtension');
     if ($appExtension !== null) {
         $appExtension->before();
         $this->doRequest();
         $appExtension->after();
     } else {
         $this->doRequest();
     }
     Tiny::$_iserror = false;
 }
Exemple #2
0
 /**
  * 异常处理机制
  * 
  * @access public
  * @param mixed $exception
  * @return mixed
  */
 public static function handleException($exception)
 {
     //页面中正确运行的部分
     if (ob_get_length() > 0) {
         ob_end_clean();
     }
     $errorStack = array();
     $file = $exception->getFile();
     $line = $exception->getLine();
     $code = $exception->getCode();
     $message = $exception->getMessage();
     if ($code !== null) {
         restore_error_handler();
         restore_exception_handler();
         $log = "{$message} (" . str_replace(TINY_ROOT, "", $file) . ":{$line})\r\nStack trace:\r\n";
         $trace = $exception->getTrace();
         self::paseErrorTrace($trace, $log);
         $errorStack = $trace;
     }
     try {
         $errorType = 'Exception';
         Tiny::log($log, $errorType);
         $error_file = new File($file);
         $codes = $error_file->gets($line);
         $file = str_replace(TINY_ROOT, "", $file);
         $datas = array('errorType' => $errorType, 'file' => $file, 'line' => $exception->getLine(), 'codes' => $codes, 'errorStack' => $errorStack, 'errorContent' => get_defined_vars());
         $error = new Error(Tiny::app(), $message, null, $datas);
         if ($error) {
             $error->handle();
             self::$_iserror = false;
         } else {
             self::displayError($code, $message, $file, $line);
         }
     } catch (Exception $e) {
         self::displayException($e);
     }
 }