Laravel 4 - 抓住错误

The*_*Guy 5 php laravel laravel-4

似乎不可能自己捕获错误,因为得到了laravel 4错误输出.

例如,如果我尝试:

    $databaseConfig = Config::get('database.connections.mysql');
    $connect = mysql_connect($databaseConfig['host'], $databaseConfig['username'], $databaseConfig['password']);
    if (!$connect)
    {
        return 'error';
    }
Run Code Online (Sandbox Code Playgroud)

如果发生错误,我将不会得到"错误",insted laravel向我显示异常(在该橙色站点上).

如果你继续尝试一下,也一样

try {
    $pdo = DB::connection('mysql')->getPdo();
}
    catch(PDOException $exception) {
    return Response::make('Database error! ' . $exception->getCode());
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Der*_*ola 16

您提供的代码应该可以正常工作.如果我把它放在我的routes.php中,我会看到预期的错误字符串(没有橙色).

Route::get('error', function() {
    try
    {
        $pdo = DB::connection('mysql')->getPdo();
    }
    catch(PDOException $exception)
    {
        return Response::make('Database error! ' . $exception->getCode());
    }
    return 'all fine';
});
Run Code Online (Sandbox Code Playgroud)

这里可能会发生的是,您的PDOException未被捕获.尝试为PDOException添加一个反斜杠,这样你就可以确定它是在根目录中定义的,而不是在当前名称空间中.

catch(\PDOException $exception)
Run Code Online (Sandbox Code Playgroud)

另外,尝试直接从routes.php文件中运行代码,看看它是否表现相同.