代码之家  ›  专栏  ›  技术社区  ›  Eduardo

yii2-catch需要错误

  •  0
  • Eduardo  · 技术社区  · 7 年前

    我有一个使用基本应用程序模板创建的yii2应用程序。在web.php中,我需要一个名为params.php的文件。为了管理这一点,我使用文件存在函数:

    if(file_exists(__DIR__ . '/params.php')) {
            $params = require __DIR__ . '/params.php';
        } 
    

    我想抛出一个异常以便显示yii error/debug页面。我试过:

    if(file_exists(__DIR__ . '/params.php')) {
            $params = require __DIR__ . '/params.php';
        } else {
            throw new Exception("Error", 1000);
        }
    

    但是yii2错误处理程序没有捕捉到它,我不确定此时是否已经可用。有没有其他方法可以在这些页面上显示?

    1 回复  |  直到 7 年前
        1
  •  2
  •   rob006    7 年前

    在应用程序初始化时注册了错误处理程序配置自 web.php 在应用程序初始化之前加载(因为需要先获取配置才能初始化应用程序),因此此时错误处理程序尚未就绪。

    您可以使用事件推迟加载参数:

    return [
        'on beforeRequest' => function () {
            if (file_exists(__DIR__ . '/params.php')) {
                Yii::$app->params = require __DIR__ . '/params.php';
            } else {
                throw new Exception('Error', 1000);
            }
        }
        // rest of app config
    ];
    
    推荐文章