无法在 catch 块中捕获异常 - Yii2

问题描述

异常

异常“错误”,消息为“类 'app\commands\CallLogs' not 找到'

无法被catch块捕获。

代码

我尝试调用 undefined 类只是为了查看异常 catch 块如何捕获以及捕获什么。

public function actiontest(){
    try {
        $logs = new CallLogs();
    } catch (\yii\base\Exception $ex) {
        print $ex->getMessage();
    } catch(\ErrorException $ex){
        print $ex->getMessage();
    }
}

但是,当我故意抛出任何异常时,它会起作用。

public function actiontest(){
    try {
        throw new \yii\base\Exception('hello');
    } catch (\yii\base\Exception $ex) {
        print $ex->getMessage();
    } catch(\ErrorException $ex){
        print $ex->getMessage();
    }
}

我尝试过使用 base\Exception 类和 \ErrorException 类。但是,没有帮助。

任何帮助/提示都是可观的

解决方法

catch (\Throwable $e) 将完成这项工作

\Throwable 是在 PHP 7.0 中引入的,并且(引用自文档)用于

[...] 任何可以通过 throw 语句抛出的对象,包括 错误和异常。