【发布时间】:2017-01-12 05:20:22
【问题描述】:
我正在学习 Laravel 以创建一个宁静的 API。以下代码当前正在与 Users 表对话并在其中创建新记录。但是,当重复的电子邮件请求到达数据库时,我认为会被捕获的异常(返回 JSON 错误)不是,而是我得到一个 Laravel 异常,它似乎是一个更深层次的“QueryException”应用程序。
消息如下:
QueryException in Connection.php line 761: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'email' in ....
我如何才能最好地在我的应用程序中捕获此错误并返回 Json 响应而不是 Laravel 响应?我错过了一些明显的东西吗?
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\User as User;
use JWTAuth;
use Response;
use App\Http\Controllers\Controller;
class LoginController extends Controller
{
public function __construct(Request $request){
$this->request = $request;
}
public function signup()
{
$email = $this->request->input('email');
$password = $this->request->input('password');
$credentials['email'] = $email;
$credentials['password'] = $password;
$credentials['name'] = 'Name';
try {
$user = User::create($credentials);
} catch (Exception $e) {
return Response::json(['error' => 'User already exists.'], HttpResponse::HTTP_CONFLICT);
}
$token = JWTAuth::fromUser($user);
return Response::json(compact('token'));
}
}
【问题讨论】:
-
试试
catch (\Exception $e) -
@ka_lin - 这是什么巫术?这行得通:) 你能详细说明这里发生了什么吗?