gpt4 book ai didi

php - 无法捕获 symfony FatalErrorException

转载 作者:IT王子 更新时间:2023-10-29 01:18:21 25 4
gpt4 key购买 nike

我有这样的代码:

try {
$var = $object->getCollection()->first()->getItem()->getName();
} catch(\Exception $e) {
$var = null;
}

当然,我有可交流的变量名和方法名。这只是演示。

因此,如果我的集合为空,Collection::first() 将返回 false。然后 getItem 调用将抛出 Symfony\Component\Debug\Exception\FatalErrorException,上面的代码不会捕获它。

我的问题是我怎样才能捕捉到这个异常?我有像这样的长链,其中有许多可以返回 null 的 setter/getter 。所以我更喜欢这种方式,而不是检查每个值是否为 null。

最佳答案

使用 Throwable 类代替 Exception 类:

try {
$var = $object->getCollection()->first()->getItem()->getName();
} catch(\Throwable $e) {
$var = null;
$msg = $e->getMessage();
}

自 PHP 7.0 以来, fatal error 和可恢复错误引发的异常是一个新的独立异常类的实例:Error。这个新的 Error 类实现了 Throwable 接口(interface),它指定的方法几乎与 Exception 的方法相同。因为 Throwable 在层次结构中较高,所以您可以同时捕获\Error 和\Exception。

interface Throwable
|- Exception implements Throwable
|- ...
|- Error implements Throwable
|- TypeError extends Error
|- ParseError extends Error
|- ArithmeticError extends Error
|- DivisionByZeroError extends ArithmeticError
|- AssertionError extends Error

关于php - 无法捕获 symfony FatalErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28406566/

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