关于 PHP 异常捕获的问题,catch 中的类应该如何选择?
我尝试在本节的以下代码中寻找异常抛出的位置
try {
if ($code = $request->code) {
$response = $driver->getAccessTokenResponse($code); // 如果 $code 使用过的话异常会在这里抛出
.
.
.
} else {
.
.
.
}
.
.
.
} catch (\Exception $e) {
// echo $e->getMessage(); 这里会显示 Undefined index: openid
return $this->response->errorUnauthorized('参数错误,未获取用户信息');
}
我想请教的问题是
- 在捕获异常的时候为什么不用
$e->getMessage()
- 该如何选择 catch 中的异常类,如
app/Http/Controllers/Api/VerificationCodesController.php
中 33 行到 44 行涉及到短信发送的代码try { . . . } catch (\GuzzleHttp\Exception\ClientException $exception) { . . . }
在网上查找资料后,按我的理解是
异常是由哪个类抛出的,在 catch 中就由哪个类捕获
结合我的理解,再去查看 overtrue/easy-sms
的源码,感觉上述问题 2 中 catch 使用 \GuzzleHttp\Exception\ClientException $exception
的原因是该扩展包使用了 GuzzleHttp
扩展包的功能,所以要使用 GuzzleHttp
中的异常处理类,不知道这样对不对
本人愚钝,还请各位赐教