在laravel 3中无法捕获PDOException

时间:2014-05-07 19:42:29

标签: php mysql laravel laravel-3

我正试图在laravel 3中捕获PDOException,但似乎我不能这样做。我的代码如下:

try{
    DB::connection()->pdo->beginTransaction();

    Myobject::create($cleaned_input_array);

    // do other stuff that could possibly throw a custom exception

    DB::connection()->pdo->commit();
}
catch(\PDOException $e)
{
    DB::connection()->pdo->rollBack();
    return HTTP_STATUS::response(BAD_REQUEST, array("error creating");
}
catch(Exception $e)
{
    DB::connection()->pdo->rollBack();
    return HTTP_STATUS::response(BAD_REQUEST, array($e->getMessage()));
}

如果'try'中的其他部分抛出异常,则会捕获一般异常。如果他们不这样做,一切都很干净。如果create在执行MYSQL语句时遇到问题,它不会抛出PDOException,它只会引发一般异常。

1 个答案:

答案 0 :(得分:-1)

模型实际上不会抛出PDOException,而是会在内部捕获,而是会抛出\Illuminate\Database\QueryException,尝试抓住它。