【问题标题】:Exception not able to get caught in catch block - Yii2异常无法被捕获块捕获 - Yii2
【发布时间】:2021-09-21 15:41:47
【问题描述】:

例外

异常“错误”与消息“类 'app\commands\CallLogs' 不是 找到了'

无法被 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 类。但是,没有帮助。

任何帮助/提示都是显而易见的

【问题讨论】:

  • 你用的是哪个版本的php?
  • php 7.4 @DonCallisto

标签: php exception yii2 yii2-basic-app


【解决方案1】:

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

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

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

【讨论】:

  • 是的,它起作用了@Don。而且,我也会标记它。但是,它没有赶上阻挡的原因是什么。请不要介意,我只是要求它作为我未来的参考。
  • @NanaPartykar 因为找不到的类是 Fatal error 并且无论如何都无法捕获(即使使用 \Exception 基类)。此外,在您的 sn-p 中,您正在捕捉到 yii\Exception 的特定子类非常具体的东西
猜你喜欢
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 2010-10-29
  • 1970-01-01
相关资源
最近更新 更多