PHP尝试抓住最后一期

时间:2017-09-05 05:12:02

标签: php debugging try-catch

我遇到了正在处理的错误记录片段,最终将其转移到以下内容中:

System.arrayCopy()

然而,每当记录器记录消息“没有检测到错误”时它应该记录'哦,好的,出错了',因为我抛出异常(在这个例子中找不到方法,但是可能发生任何异常) )。

如何让catch()块中的代码执行?它似乎根本没有执行!

1 个答案:

答案 0 :(得分:3)

如果在PHP中调用未定义的函数,它将抛出致命错误,而不是例外。

因此,您需要捕获Error类型的对象。或者,您可以使用ThrowableError类扩展来捕获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);
}