ExceptionHandle.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace app;
  3. use think\exception\Handle;
  4. use think\exception\HttpResponseException;
  5. use Throwable;
  6. use think\Response;
  7. use think\exception\HttpException;
  8. /**
  9. * 应用异常处理类
  10. */
  11. class ExceptionHandle extends Handle
  12. {
  13. public function render($request, Throwable $e): Response
  14. {
  15. // 调试模式
  16. if (env('app_debug')) {
  17. // Ajax请求返回JSON
  18. if ($request->isAjax()) {
  19. if ($e instanceof HttpResponseException) {
  20. return $e->getResponse();
  21. } elseif ($e instanceof HttpException) {
  22. return json(['code' => $e->getStatusCode(), 'msg' => $e->getMessage()], $e->getStatusCode());
  23. } else {
  24. return json(['code' => 500, 'msg' => $e->getMessage(), 'trace' => $e->getTrace()], 500);
  25. }
  26. }
  27. // 非Ajax请求默认处理
  28. return parent::render($request, $e);
  29. } else {
  30. if ($request->isAjax()) {
  31. return json(['code' => 500, 'msg' => '服务器升级中,请稍后重试~~'], 500);
  32. } else {
  33. return parent::render($request, $e);
  34. }
  35. }
  36. }
  37. }