You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.7 KiB
67 lines
1.7 KiB
<?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 app\common\ResponseJson; |
|
use app\common\SdException; |
|
|
|
/** |
|
* 应用异常处理类 |
|
*/ |
|
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 |
|
{ |
|
// 添加自定义异常处理机制 |
|
if ($e instanceof SdException || $e instanceof ValidateException) { |
|
return ResponseJson::fail($e->getMessage()); |
|
} |
|
|
|
if (!env('APP_DEBUG')) { |
|
return Response::create(null,'html',404); |
|
} |
|
|
|
// 其他错误交给系统处理 |
|
return parent::render($request, $e); |
|
} |
|
}
|
|
|