linwu 3 週間 前
コミット
e197d18d1d
1 ファイル変更24 行追加48 行削除
  1. 24 48
      app/ExceptionHandle.php

+ 24 - 48
app/ExceptionHandle.php

@@ -1,63 +1,39 @@
 <?php
 namespace app;
 
-use think\db\exception\DataNotFoundException;
-use think\db\exception\ModelNotFoundException;
 use think\exception\Handle;
-use think\exception\HttpException;
 use think\exception\HttpResponseException;
-use think\exception\ValidateException;
-use think\Response;
 use Throwable;
+use think\Response;
+use think\exception\HttpException;
 
 /**
  * 应用异常处理类
  */
 class ExceptionHandle extends Handle
 {
-    /**
-     * 不需要记录信息(日志)的异常类列表
-     * @var array
-     */
-    protected $ignoreReport = [
-        HttpException::class,
-        HttpResponseException::class,
-        ModelNotFoundException::class,
-        DataNotFoundException::class,
-        ValidateException::class,
-    ];
-
-    /**
-     * 记录异常信息(包括日志或者其它方式记录)
-     *
-     * @access public
-     * @param  Throwable $exception
-     * @return void
-     */
-    public function report(Throwable $exception): void
-    {
-        // 使用内置的方式记录异常日志
-        parent::report($exception);
-    }
-
-    /**
-     * Render an exception into an HTTP response.
-     *
-     * @access public
-     * @param \think\Request   $request
-     * @param Throwable $e
-     * @return Response
-     */
-    public function render($request, Throwable $e): Response
-    {
-        // 添加自定义异常处理机制
-//        return json([
-//            'code' => $e->getCode(),
-//            'msg'  => $e->getMessage(),
-//            'data' => null
-//        ], 500);
+    public function render($request, Throwable $e): Response {
+        // 调试模式
+        if (env('app_debug')){
+            // Ajax请求返回JSON
+            if ($request->isAjax()) {
+                if ($e instanceof HttpResponseException) {
+                    return $e->getResponse();
+                } elseif ($e instanceof HttpException) {
+                    return json(['code'=>$e->getStatusCode(),'msg'=>$e->getMessage()],$e->getStatusCode());
+                } else {
+                    return json(['code' => 500, 'msg' => $e->getMessage(),'trace'=>$e->getTrace()],500);
+                }
+            }
 
-        // 其他错误交给系统处理
-         return parent::render($request, $e);
+            // 非Ajax请求默认处理
+            return parent::render($request, $e);
+        } else {
+            if ($request->isAjax()) {
+                return json(['code'=>500,'msg'=>'服务器异常'],500);
+            } else {
+                return parent::render($request, $e);
+            }
+        }
     }
 }