【发布时间】:2016-10-05 10:06:57
【问题描述】:
我真的不明白如何在 onReject 处理程序中捕获异常(转发它)。我想知道是否有人可以为我指明如何成功做到这一点的正确方向。
我正在发送一些异步请求,当一个请求失败并显示“遇到未捕获的异常 - 类型:GuzzleHttp\Exception\ClientException”时,它永远不会被捕获。
我已阅读:
但不清楚为什么以下不起作用。我的理解是,当在 onReject (RequestException) 中抛出 ClientException 时,它将进一步向下推到下一个 onReject (ClientException) 并被正确捕获。
任何帮助将不胜感激。
$client = new GuzzleHttp\Client();
$promise = $client->requestAsync('POST', SOME_URL, [
... SOME_PARAMS ...
]);
$promise->then(
function (ResponseInterface $res) {
//ok
},
function (RequestException $e) {
//inside here throws a ClientException
}
)->then(null, function (ClientException $e) {
//Why does it not get caught/forwarded to this error handler?
});
【问题讨论】:
-
你真的解决了这个问题吗?,我被困在同一件事上,这让我怀疑异步请求可能不是真正异步的?,因为当你运行你的发送异步请求的代码段,因为它是异步的...