category = 'shutdown'; $messages = explode(PHP_EOL, $lastError['message']); $message = array_shift($messages); $this->sendError($message, $lastError['file'], $lastError['line']); } /** * @param Exception $exception * * @throws Exception */ public function exceptionHandler($exception) { $this->category = 'exception'; $event = Snowflake::get()->event; $event->trigger(Event::RELEASE_ALL); $this->sendError($exception->getMessage(), $exception->getFile(), $exception->getLine()); } /** * @throws Exception * * 以异常形式抛出错误,防止执行后续程序 */ public function errorHandler() { $error = func_get_args(); if (strpos($error[2], 'vendor/Reboot.php') !== FALSE) { return; } $path = ['file' => $error[2], 'line' => $error[3]]; if ($error[0] === 0) { $error[0] = 500; } $data = JSON::to(500, 'Error : ' . $error[1], $path); Logger::error($data, 'error'); $event = Snowflake::get()->event; $event->trigger(Event::RELEASE_ALL); throw new \ErrorException($error[1], $error[0], 1, $error[2], $error[3]); } /** * @param $message * @param $file * @param $line * @param int $code * @return false|string * @throws Exception */ public function sendError($message, $file, $line, $code = 500) { $path = ['file' => $file, 'line' => $line]; $data = JSON::to($code, $this->category . ': ' . $message, $path); Logger::trance($data, $this->category); print_r($data); return PHP_EOL; } /** * @return mixed */ public function getErrorMessage() { $message = $this->message; $this->message = NULL; return $message->getData(); } /** * @return bool */ public function getAsError() { return $this->message !== NULL; } /** * @param $message * @param $category * * @throws Exception */ public function writer($message, $category = 'app') { Logger::debug($message, $category); } }