我试图捕获一个必需致命错误(https://3v4l.org/5MV3I):
try {
require("foo");
}
catch (Throwable $e) {
print_r($e);
}
但是脚本在所有php版本中都会死掉:
Warning: require(foo): failed to open stream: No such file or directory in /in/5MV3I on line 4
Fatal error: require(): Failed opening required 'foo' (include_path='.:') in /in/5MV3I on line 4
Process exited with code 255.
文档说(http://php.net/manual/en/function.require.php):
...除非失败,否则还会产生致命的E_COMPILE_ERROR级错误。
哪些类型的php7致命错误可以捕获,哪些不是?
答案 0 :(得分:0)
如果您使用" require()"包含一个文件。你需要它。如果它不存在,则以编译错误结束。然后PHP中止。我们的想法是,您对关键文件使用require。如果缺少那些,它会立即中止。
如果你想要抓住某些东西,你必须选择" include()"。在这里你可以很容易地获得成功:
$includeResult = include("foo");
if (!$includeResult) {
// you will land here, if include did not work.
}