目录
[TOC]
## Exception Handler
为了方便用户对异常进行处理,WorkerA 提供了 ExceptionHandler 来进行异常处理。
不对异常进行处理的话,Handler 会调用 WorkerF\Exceptions\ExceptionHandler 的 handle 方法,默认返回一个 HTML 错误页面方便浏览器查看。
你可以在 app/Exceptions/Handler.php 中进行异常处理:
```php
namespace App\Exceptions;
use WorkerF\Exceptions\ExceptionHandler;
// 继承自 WorkerF\Exceptions\ExceptionHandler
class Handler extends ExceptionHandler
{
public function handle(\Exception $e)
{
// 判断异常的类型进行处理,返回 HTTP 响应
if ($e instanceof SomeException) {
// 返回 json 数据
return [
'status' => 1,
'msg' => $e->getMessage(),
'data' => 'something',
];
}
// 使用默认的异常处理 (返回错误 HTML 信息)
return parent::handle($e);
}
}
```
## HTTP Exceptions
如果你使用默认的 WorkerF\Exceptions\ExceptionHandler 进行异常处理,那么你可以给异常设置 httpCode 属性来控制 HTTP 响应的状态码。
例如:
```php
// 控制器中抛出异常
$e = new \LogicException("Ops...Page not found!");
$e->httpCode = 404; // 设置状态码
throw $e; // 抛出异常
```
HTTP 响应头的状态行会变为 HTTP/1.1 404 Not Found。
可用的 httpCode 见 [statusCodes](https://github.com/wazsmwazsm/WorkerF/blob/master/src/WorkerF/Http/Response.php#L20)。