异常处理

配置

config/exception.php

  1. return [
  2. // 这里配置异常处理类
  3. '' => support\exception\Handler::class,
  4. ];

多应用模式时,你可以为每个应用单独配置异常处理类,参见多应用

默认异常处理类

webman中异常默认由 support\exception\Handler 类来处理。可修改配置文件config/exception.php来更改默认异常处理类。异常处理类必须实现Webman\Exception\ExceptionHandlerInterface 接口。

  1. interface ExceptionHandlerInterface
  2. {
  3. /**
  4. * 记录日志
  5. * @param Throwable $e
  6. * @return mixed
  7. */
  8. public function report(Throwable $e);
  9. /**
  10. * 渲染返回
  11. * @param Request $request
  12. * @param Throwable $e
  13. * @return Response
  14. */
  15. public function render(Request $request, Throwable $e) : Response;
  16. }

渲染响应

异常处理类中的render方法是用来渲染响应的。

如果配置文件config/app.phpdebug值为true(以下简称app.debug=true),将返回详细的异常信息,否则将返回简略的异常信息。

如果请求期待是json返回,则返回的异常信息将以json格式返回,类似

  1. {"code" : "500", "msg" : "异常信息"}

如果app.debug=true,json数据里会额外增加一个trace字段返回详细的调用栈。

你可以编写自己的异常处理类来更改默认异常处理逻辑。