Php 是否可以捕获Symfony中非异常的错误?
我有一个try-catch块,它迭代一组记录,如下所示: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 {
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自定义异常处理程序
关闭调试模式似乎绕过了某些异常,尽管mytry catch
块配置为捕获常规Exception
对象。真奇怪
谢谢 有关在出现错误时引发异常的方法,请参见的答案。有关在出现错误时引发异常的方法,请参见的答案。可能重复的可能重复我已更新了问题,既然我已经看到了这些解决方案,但没有解决我的问题,你能验证一下为什么它不起作用吗?错误报告是否已关闭?是否每次调用异常\u错误\u处理程序?我的错。Symfony正在生产模式下执行。但现在我已经将其转换为调试模式,Symfony似乎正在实现自己的错误处理机制,覆盖我的自定义函数。可能的重复可能的重复我已经更新了这个问题,因为我已经看到了这些解决方案,但没有解决我的问题。你能验证它为什么不起作用吗?错误报告是否已关闭?是否每次调用异常\u错误\u处理程序?我的错。Symfony正在生产模式下执行。但现在我已经将其转换为调试模式,Symfony似乎正在实现自己的错误处理机制,覆盖我的自定义函数。