|
@@ -1,58 +1,39 @@
|
|
<?php
|
|
<?php
|
|
namespace app;
|
|
namespace app;
|
|
|
|
|
|
-use think\db\exception\DataNotFoundException;
|
|
|
|
-use think\db\exception\ModelNotFoundException;
|
|
|
|
use think\exception\Handle;
|
|
use think\exception\Handle;
|
|
-use think\exception\HttpException;
|
|
|
|
use think\exception\HttpResponseException;
|
|
use think\exception\HttpResponseException;
|
|
-use think\exception\ValidateException;
|
|
|
|
-use think\Response;
|
|
|
|
use Throwable;
|
|
use Throwable;
|
|
|
|
+use think\Response;
|
|
|
|
+use think\exception\HttpException;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 应用异常处理类
|
|
* 应用异常处理类
|
|
*/
|
|
*/
|
|
class ExceptionHandle extends Handle
|
|
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
|
|
|
|
- {
|
|
|
|
- // 添加自定义异常处理机制
|
|
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|