如何在Laravel 5中捕获SQL异常

时间:2016-10-14 10:13:59

标签: php sql laravel laravel-5

Hay我正在创建这样的代码:

\Log::info("saving log....");
    try{
        $data = AstronautCandidateLog::insert($request->logs);
    }catch (SQLException $e)
    {
        \Log::info("SQL Exception happened");
    }catch (Exception $e)
    {
        \Log::info("Exception happened");
    }

    \Log::info("status save data : ". $data);

但似乎我的异常永远不会被击中。那么如果在sql查询中出现错误时如何捕获laravel中的异常...... ??

提前致谢。

4 个答案:

答案 0 :(得分:3)

试试这个

try { 
 //Your code
} catch(\Illuminate\Database\QueryException $ex){ 
  dd($ex->getMessage()); 
}

OR

use Illuminate\Database\QueryException;

 try { 
     //Your code
    } catch(QueryException $ex){ 
      dd($ex->getMessage()); 
    }

答案 1 :(得分:0)

我的情况:在例外类之前添加\,否则它将无法处理

try
{
//write your codes here
}

catch(\Exception $e) {

            Log::error($e->getMessage());
        }

答案 2 :(得分:0)

确保在控制器中使用Exception库。从那里可以做:

 it { is_expected.to callback(:init_country_id).before(:initialize) }

答案 3 :(得分:-1)

要在Laravel中实现异常,只需在控制器顶部添加Exception类即可,

Use Exception;

然后使用try-catch语句包装您希望捕获异常的代码行

try
{
//write your codes here
}
catch(Exception $e)
{
   dd($e->getMessage());
}

这一次,如果您正在发出Ajax请求,您还可以以json格式返回错误,请记住在控制器顶部包括Response类。

Use Response;
Use Exception;

然后将代码包装在try-catch语句中,如下所示

try
{
//write your codes here
}
catch(Exception $e)
{
    return response()->json(array('message' =>$e->getMessage()));
}

我希望这能解决您的问题,您可以了解有关Laravel和错误处理here

的更多信息