Gar*_*Dan 4 php exception try-catch require include
我正在尝试编写类似的代码:
<?php
$includes = array(
'non_existing_file.php', //This file doesn't exist.
);
foreach ($includes as $include) {
try {
require_once "$include";
} catch (Exception $e) {
$message = $e->getMessage();
echo "
<strong>
<font color=\"red\">
A error ocurred when trying to include '$include'.
Error message: $message
</font>
</strong>
";
}
}
Run Code Online (Sandbox Code Playgroud)
我已经试过require_once和include_once,但try catch没有捕获异常.
我怎么能抓住这个致命的错误/警告异常?
pas*_*der 15
由于include/require不会抛出异常,因此请检查您要包含的文件是否存在且可读.例如:
$inc = 'path/to/my/include/file.php';
if (file_exists($inc) && is_readable($inc)) {
include $inc;
} else {
throw new Exception('Include file does not exists or is not readable.');
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案(改编自这里)对我来说效果很好:
register_shutdown_function('errorHandler');
function errorHandler() {
$error = error_get_last();
$type = $error['type'];
$message = $error['message'];
if ($type == 64 && !empty($message)) {
echo "
<strong>
<font color=\"red\">
Fatal error captured:
</font>
</strong>
";
echo "<pre>";
print_r($error);
echo "</pre>";
}
}
Run Code Online (Sandbox Code Playgroud)