当我调用$ this-> get()时,它在get方法内抛出了一个ClientClient异常,该异常不是ClientException,最后一个catch块被调用,但是整个方法都返回NULL。
我已经在最后一个catch块内使用var_dump($ e)确认该catch块正在捕获错误...但是抛出似乎不起作用!
这让我震惊,我不明白为什么。
public function get(string $url, $params = null): array
{
$client = new Client();
try {
$response = $client->get($url, ['query' => $params]);
return json_decode($response->getBody(), true);
} catch (ClientException $e) {
if (!empty($response = self::handleGuzzleErrors($e, $url))) {
return $response;
}
throw $e;
} catch (\Exception | \Throwable $e) {
var_dump($e);
throw $e;
}
}
public function getSub(string $url, array $subs, $params = null): array
{
$url = strtr($url, $subs);
$result = $this->get($url, $params);
return $result;
}
答案 0 :(得分:0)
throw
!= return
尝试像这样尝试/捕获来包装对$this->get()
的呼叫:
public function getSub(string $url, array $subs, $params = null): array
{
$url = strtr($url, $subs);
try {
$result = $this->get($url, $params);
} catch (\Exception | \Throwable $e) {
echo "This gets called";
}
return $result;
}
如果连接失败并抛出错误,则返回null
之外的任何内容都是没有意义的。
如果要在引发错误时返回“默认”返回值,请使用return
代替throw