我遇到了正在处理的错误记录片段,最终将其转移到以下内容中:
System.arrayCopy()
然而,每当记录器记录消息“没有检测到错误”时它应该记录'哦,好的,出错了',因为我抛出异常(在这个例子中找不到方法,但是可能发生任何异常) )。
如何让catch()块中的代码执行?它似乎根本没有执行!
答案 0 :(得分:3)
如果在PHP中调用未定义的函数,它将抛出致命错误,而不是例外。
因此,您需要捕获Error
类型的对象。或者,您可以使用Throwable
和Error
类扩展来捕获Exception
个对象。
http://php.net/manual/en/language.errors.php7.php
<?php
$errorMsg = 'No Errors Detected';
try {
nonexistentfunction();
}
catch (Throwable $e) {
$errorMsg = 'Oh well, something went wrong';
}
finally{
$this->logger->log($errorMsg);
}