异常机制
Saber遵循将业务与错误分离的守则, 当请求任意环节失败时, 默认都将会抛出异常.
强大的是, Saber的异常处理也是多样化的, 且和PHP的原生的异常处理一样完善.
异常的命名空间位于Swlib\Http\Exception
Exception | Intro | scene |
---|---|---|
RequestException | 请求失败 | 请求配置错误 |
ConnectException | 连接失败 | 如无网络连接, DNS查询失败, 超时等, errno的值等于Linux errno。可使用swoole_strerror将错误码转为错误信息。 |
TooManyRedirectsException | 重定向次数超限 | 重定向的次数超过了设定的限制, 抛出的异常将会打印重定向追踪信息 |
ClientException | 客户端异常 | 服务器返回了4xx错误码 |
ServerException | 服务器异常 | 服务器返回了5xx错误码 |
BadResponseException | 未知的获取响应失败 | 服务器无响应或返回了无法识别的错误码 |
除一般异常方法外, 所有HTTP异常类还拥有以下方法 :
Method | Intro |
---|---|
getRequest | 获取请求实例 |
hasResponse | 是否获得响应 |
getResponse | 获取响应实例 |
getResponseBodySummary | 获取响应主体的摘要内容 |
捕获例子
try {
echo SaberGM::get('http://httpbin.org/redirect/10');
} catch (TooManyRedirectsException $e) {
var_dump($e->getCode());
var_dump($e->getMessage());
var_dump($e->hasResponse());
echo $e->getRedirectsTrace();
}
// int(302)
// string(28) "Too many redirects occurred!"
// bool(true)
#0 http://httpbin.org/redirect/10
#1 http://httpbin.org/relative-redirect/9
#2 http://httpbin.org/relative-redirect/8