Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以捕获Symfony中非异常的错误?_Php_Exception_Error Handling_Symfony 1.4 - Fatal编程技术网

Php 是否可以捕获Symfony中非异常的错误?

Php 是否可以捕获Symfony中非异常的错误?,php,exception,error-handling,symfony-1.4,Php,Exception,Error Handling,Symfony 1.4,我有一个try-catch块,它迭代一组记录,如下所示: try { foreach ( $json['location'] as $records ) { $location = DnaExtractionTable::getInstance()->find($records['id']); $location->setName($records['name']); $location->setLatitude($records['latitude

我有一个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\u X\u 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\u error\u handler
功能

更新2:

Symfony肯定是在摆弄我的错误和异常处理程序

打开调试模式似乎激活了覆盖错误报告的Symfony自定义异常处理程序

关闭调试模式似乎绕过了某些异常,尽管my
try catch
块配置为捕获常规
Exception
对象。真奇怪


谢谢

有关在出现错误时引发异常的方法,请参见的答案。

有关在出现错误时引发异常的方法,请参见的答案。

可能重复的可能重复我已更新了问题,既然我已经看到了这些解决方案,但没有解决我的问题,你能验证一下为什么它不起作用吗?错误报告是否已关闭?是否每次调用异常\u错误\u处理程序?我的错。Symfony正在生产模式下执行。但现在我已经将其转换为调试模式,Symfony似乎正在实现自己的错误处理机制,覆盖我的自定义函数。可能的重复可能的重复我已经更新了这个问题,因为我已经看到了这些解决方案,但没有解决我的问题。你能验证它为什么不起作用吗?错误报告是否已关闭?是否每次调用异常\u错误\u处理程序?我的错。Symfony正在生产模式下执行。但现在我已经将其转换为调试模式,Symfony似乎正在实现自己的错误处理机制,覆盖我的自定义函数。