gpt4 book ai didi

php - 异常 : re-throw and multiple catch blocks

转载 作者:行者123 更新时间:2023-12-05 03:14:40 24 4
gpt4 key购买 nike

我有一种情况,我想在 catch block 中重新抛出一个异常,并让它被更通用的 catch 捕获。

例子:

try {
somethingThatMightThrowExceptions();
}
catch (ClientErrorResponseException $e) {
if ($e->getResponse()->getStatusCode() == 404) {
return $this->notFound();
}
throw $e; // even tried throw new \Exception();
}
catch (\Exception $e) {
return $this->serverError('Server error');
}

所以在我的第一个 catch block 中,我检查了一个特定的条件,如果失败了,我想重新抛出异常并让它被通用的 catch (\Exception) block 捕获。但在这种情况下,它只是冒泡回到调用者。

问题是最后的 catch 中实际上还有几行代码,我不想重复。我当然可以将它们提取到一个方法中,但这感觉有点矫枉过正。

所以基本上我想在不添加额外层的情况下全部在线完成。有什么建议吗?

最佳答案

这是因为 catch 只工作一次,因为你抛出一个异常而不是 try block 。如果您确定要这样做,那么您需要嵌套 try..catch 语句,正如@deceze 在评论中建议的那样。

您应该改为描述您想要完成的事情,因为可能有更好的方法来完成。

关于php - 异常 : re-throw and multiple catch blocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23866791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com