为什么我的异常没有被Laravel破坏方法捕获?

时间:2015-01-10 14:33:12

标签: laravel destroy

为什么我的例外未被捕获?

    try {
        \Account::destroy($id);
        return Redirect::to("/manager/account")
                            ->with("success_message", "Item excluido com sucesso");
    } catch (Exception $e) {
        return Redirect::to("/manager/account/{$id}/edit")
                        ->with("error_message", "Erro ao excluir item");
    }
  

SQLSTATE [23000]:完整性约束违规:1451无法删除或   更新父行:外键约束失败   (imob_iousers,CONSTRAINT users_account_id_foreign FOREIGN KEY   (account_id)REFERENCES accountsid))(SQL:delete from   accounts其中id = 2)

1 个答案:

答案 0 :(得分:5)

目前,您正在当前命名空间中捕获类Exception。相反,您应该引用全局类型\Exception

catch (\Exception $e){
    return Redirect::to("/manager/account/{$id}/edit")
                    ->with("error_message", "Erro ao excluir item");
}

我还建议你缩小一点,而不是只捕获每个异常。例如,您可以捕获QueryException,这将因违反约束而被抛出等。

catch(\Illuminate\Database\QueryException $e)