Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 35 additions & 2 deletions zh/web/exception.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,43 @@
2. 如果异常类型是PageNotFoundException,则会跳转配置的404页面。
3. 如果异常类型是InvalidRouteException,则会跳转到配置的404页面。
4. 如果是exception code在业务异常定义范围内,则会根据request类型选择输出json或者html错误信息
5. 如果上述异常均未匹配,如果有配置的500页面则跳转,否则输出霸王龙也页面
5. 如果上述异常均未匹配,如果有配置的500页面则跳转,否则输出霸王龙页面

> 以上流程从1~5按顺序逐个匹配,当匹配上某一条则后面的都不执行,如果都没有匹配上会走5的逻辑。


当然,也可以在项目中通过配置文件`exception.php`来增加异常类到框架异常调用链的顶端,优先处理。如下:

`resource/share/exception.php`

```
return array(
//handles里面的内容会追加到框架异常调用链的最顶部
'handles' => array(
\Store\Common\Exception\StoreExceptionHandle::class
)
);
```

`Common/Exception/StoreExceptionHandle.php`

```
namespace Store\Common\Exception;

use Zan\Framework\Contract\Foundation\ExceptionHandler;
use Zan\Framework\Foundation\Core\Path;
use Zan\Framework\Foundation\Core\RunMode;
use Zan\Framework\Network\Http\Response\JsonResponse;
use Zan\Framework\Network\Http\Response\Response;

class StoreException implements ExceptionHandler {

public function handle(\Exception $e) {
//这里写自己的异常处理逻辑,会优先处理。。。
}
```


### Debug模式下

如果在debug模式下,在执行上述流程之外,还会在STDOUT中打印异常信息,方便调试。
如果在debug模式下,在执行上述流程之外,还会在STDOUT中打印异常信息,方便调试。