【问题标题】:How to catch SQL Exception in Laravel 5如何在 Laravel 5 中捕获 SQL 异常
【发布时间】:2017-02-23 17:40:51
【问题描述】:

我正在创建这样的代码:

\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中捕获异常...??

提前致谢。

【问题讨论】:

  • 尝试捕捉\Illuminate\Database\QueryException
  • 还是没有运气@canVural....

标签: php sql laravel laravel-5


【解决方案1】:

试试这个

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

use Illuminate\Database\QueryException;

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

【讨论】:

【解决方案2】:

我的情况:在 Exception 类之前添加 \ 否则它不会处理

try
{
//write your codes here
}

catch(\Exception $e) {

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

【讨论】:

    【解决方案3】:

    确保在您的控制器中使用异常库。从那里你可以做:

    try{
        Some queries . . .
    }catch(Exception $e){
        return response()->json([
          'error' => 'Cannot excecute query',
        ],422);
    }
    

    【讨论】:

      【解决方案4】:

      要在 Laravel 中实现异常,只需在控制器顶部包含 Exception 类

      Use Exception;
      

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

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

      您也可以以 json 格式返回错误,以防您发出 Ajax 请求,这一次,请记住在控制器顶部包含 Response 类

      Use Response;
      Use Exception;
      

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

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

      我希望这能解决你的问题,你可以了解更多关于 Laravel 和错误处理here

      【讨论】:

        猜你喜欢
        • 2014-12-25
        • 1970-01-01
        • 2018-01-07
        • 2015-04-21
        • 2017-09-26
        • 2015-06-24
        • 2023-03-16
        • 1970-01-01
        • 2016-01-30
        相关资源
        最近更新 更多