小编Sau*_*918的帖子

为什么 PHP 7 没有捕捉到一些错误?

PHP 7 中,可以抛出的任何对象的基本接口是Throwable。我们还有一个用于所有内部 PHP 错误的Error基类。但是为什么我无法捕捉到以下错误:

一种)

try {
    $file = fopen('not_exist_file', 'r');
} catch (\Error $e) {
    echo 'Cannot open a file';
}
Run Code Online (Sandbox Code Playgroud)

预期结果:'无法打开文件'
实际结果:PHP 警告:fopen(not_exist_file):无法打开流:没有这样的文件或目录

b)

try {
    $result = 10 / 0;
} catch(\DivisionByZeroError $e){
    echo 'Catch DivisionByZeroError';
} catch (\Throwable $e) {
    echo 'Catch Throwable';
}
Run Code Online (Sandbox Code Playgroud)

预期结果:'Catch DivisionByZeroError'
实际结果:PHP 警告:在 ..

C)

try {
    trigger_error('User error');
} catch(\Error $e) {
    echo 'Catch error';
} catch (\Throwable $e) …
Run Code Online (Sandbox Code Playgroud)

php

6
推荐指数
1
解决办法
339
查看次数

标签 统计

php ×1