| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- namespace app\common\exception;
- use think\exception\Handle;
- use think\Log;
- use Exception;
- /**
- * 重写Handle的render方法,实现自定义异常消息
- * Class ExceptionHandler
- * @package app\common\library\exception
- */
- class ExceptionHandler extends Handle
- {
- private $code;
- private $message;
- /**
- * 输出异常信息
- * @param Exception $e
- * @return \think\Response|\think\response\Json
- */
- public function render(Exception $e)
- {
- if ($e instanceof BaseException) {
- $this->code = $e->code;
- $this->message = $e->message;
- } else {
- if (config('app_debug')) {
- return parent::render($e);
- }
- $this->code = 0;
- $this->message = $e->getMessage() ?: '很抱歉,服务器内部错误';
- $this->recordErrorLog($e);
- }
- return json(['msg' => $this->message, 'code' => $this->code]);
- }
- /**
- * 将异常写入日志
- * @param Exception $e
- */
- private function recordErrorLog(Exception $e)
- {
- Log::record($e->getMessage(), 'error');
- Log::record($e->getTraceAsString(), 'error');
- }
- }
|