gpt4 book ai didi

php - 是否可以捕获不是Symfony中异常的错误?

转载 作者:行者123 更新时间:2023-12-03 08:08:28 26 4
gpt4 key购买 nike

我有一个try-catch块,它遍历像这样的一组记录:

try {
foreach ( $json['location'] as $records ) {
$location = DnaExtractionTable::getInstance()->find($records['id']);
$location->setName($records['name']);
$location->setLatitude($records['latitude']);
$location->setLongitude($records['longitude']);
$location->setCountryId($records['country_id']);
$location->setRegionId($records['region_id']);
$location->setIslandId($records['island_id']);
$location->setRemarks($records['remarks']);
$location->save();
}
}
catch (Exception $e) {
...
}

我可以捕获所有抛出的异常,并且可以继续进行而不会出现问题。但我也试图“捕捉”错误,例如当 $records数组中不存在索引时。

有可能这样做吗?我该怎么办?我一直在使用 set_X_handler函数,但没有成功。

更新1:

根据评论和答案的建议,我决定实现一个全局错误功能:
function exceptions_error_handler($severity, $message, $filename, $lineno) {
if (error_reporting() == 0) {
return;
}
if (error_reporting() & $severity) {
throw new ErrorException($message, 0, $severity, $filename, $lineno);
}
}
set_error_handler('exceptions_error_handler');

但是,即使我尝试强制执行错误,代码也不会执行。由于我正在使用Symfony开发,是否有地方可以声明该功能? Symfony可能会禁用或影响 set_error_handler函数吗?

更新2:

Symfony肯定搞砸了我的错误和异常处理程序。

打开 Debug模式似乎可以激活一个覆盖错误报告的Symfony自定义异常处理程序。

尽管我的 try-catch块配置为捕获常规 Exception对象,但关闭 Debug模式似乎绕过了某些异常。真是奇怪的行为。

谢谢!

最佳答案

有关引发错误时引发异常的方法,请参见的答案Handling errors as exceptions. Best methods?

关于php - 是否可以捕获不是Symfony中异常的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712722/

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