在做API時,需要對一些異常進行全局處理
比如添加用戶執行失敗時,需要返回錯誤信息
// 添加用戶
$result = User::add($user);
if(empty($result)){
throw new ApiException('添加失敗');
}
API 回復
{
"msg" : "添加失敗",
"data" : "",
"status" : 0 // 0為執行錯誤
}
那么我們就需要添加一個全局異常處理,專門用來返回錯誤信息
步驟
- 添加異常處理類
- 修改laravel異常處理
1.添加異常處理類
./app/Exceptions/ApiException.php
<?php
namespace App\Exceptions;
class ApiException extends \Exception
{
function __construct($msg='')
{
parent::__construct($msg);
}
}
2.修改laravel異常處理
./app/Exceptions/Handler.php
// Handler的render函數
public function render($request, Exception $e)
{
// 如果config配置debug為true ==>debug模式的話讓laravel自行處理
if(config('app.debug')){
return parent::render($request, $e);
}
return $this->handle($request, $e);
}
// 新添加的handle函數
public function handle($request, Exception $e){
// 只處理自定義的APIException異常
if($e instanceof ApiException) {
$result = [
"msg" => "",
"data" => $e->getMessage(),
"status" => 0
];
return response()->json($result);
}
return parent::render($request, $e);
}
大功告成....