是否有理由呼叫stat
会抛出RuntimeException
?这是在使用CakePHP和PHP-VCR进行phpunit测试期间。对stat的调用包括error control operator, @。所以它是:
错误发生在PHP-VCR代码中(StreamProcessor.php第291行)。
try {
$result = @stat($path);
} catch (\RuntimeException $e) {
error_log(print_r($e, true));
}
'type' => (int) 2,
'message' => 'stat(): stat failed for /x/y/z/mycakephpprojet/app/tmp/cache/persistent/myapp_cake_core_cake_eng',
'file' => '/x/y/z/mycakephpprojet/app/Vendor/php-vcr/php-vcr/src/VCR/Util/StreamProcessor.php',
'line' => (int) 291
我所知道的是缺少引用的文件(它是稍后生成的缓存文件)。所以我希望stat返回false,而不是抛出异常。
注意:
error_reporting()
报告24575,由于@ error控制运算符,我预计它会为0。此外,我查看了所有set_error_handler
次来电,甚至将调试电话放入其中,我确定它们不是来自他们。异常对象的堆栈跟踪具有最新的行
'#0 [internal function]: VCR\Util\StreamProcessor->url_stat('/home/tylercoll...', 2)
所以我不觉得我可以拦截另一个级别进行检查。
set_exception_handler
处理抛出的RuntimeException。但是如果我手动使用throw new \RuntimeException
,我将使用自定义处理程序。PHPUnit_Framework_Error_Warning
。我99%肯定我立即再次运行它,从那时起它就是RuntimeException。但是,如果错误的类型报告为2(又名E_WARNING),则警告会有意义。PHPUnit 3.7.37 by Sebastian Bergmann. Configuration read from phpunit.xml
。然后失败就在那之后。