我在下面调用一个API端点,并捕获直接从其返回的任何错误,将其解码并显示为错误:
try {
$authService = new AuthService();
$login = $authService->loginGetToken($email, $password);
}catch (\Exception $e) {
$response = json_decode($e->getResponse()->getBody()->getContents());
$message = $response->message;
return Redirect::back()->withErrors($message);
}
我的问题:如果密码已过期,我会返回400错误,并显示消息“密码已过期”
我的catch块中是否有一种方法可以检查代码和消息是否正确,如果是,则将其重定向到视图auth.reset
以重置密码?
答案 0 :(得分:2)
您可以致电$e->getMessage()
... http://php.net/manual/en/exception.getmessage.php ...还有一个$e->getCode()
来获取代码,因为您同时询问了这两个问题。
类似这样:
if($e->getMessage() == 'Password is Expired') {
return redirect('auth/reset'); // or whatever your route is
}
或使用您的代码:
try {
...
} catch (\Exception $) {
$response = json_decode($e->getResponse()->getBody()->getContents());
$message = $response->message;
if($message == 'Password is Expired') {
return redirect('auth/reset'); // or whatever your route is
}
return Redirect::back()->withErrors($message);
}
您还可能会发现正在获取一种可以捕获的特定类型的异常:
catch (PasswordExpiredException $e) {
... // password is expired
} catch (Exception $e) {
... // something else happened
}