如何处理 Laravel 中的本机异常?
How to handle native exception in Laravel?
例如我使用:
return User::findOrFail($id);
当 $id
行不存在时,我得到异常。
如何在 Json 响应中 return 这个异常?它现在 returns HTML Laravel 页。
我需要像这样的东西:
{"error", "No query results for model"}
来自他们的文档:
Sometimes you may wish to throw an exception if a model is not found. This is particularly useful in routes or controllers. The findOrFail and firstOrFail methods will retrieve the first result of the query. However, if no result is found, a Illuminate\Database\Eloquent\ModelNotFoundException will be thrown.
因此,您可以捕获该异常,或者使用简单的 Find
方法。找不到就returnfalse,你可以相应处理。
return User::find($id);
更新:
选项 1:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
选项 2:
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
您应该查看 Handler file 的 render
方法。您可以在此处测试异常 class 并根据它 return 以 Json 格式
的不同响应
您可以处理各种类型的异常,在这种情况下可以使用 ModelNotFoundException 处理该异常
try{
$user = User::findOrFail($id);
}catch(ModelNotFoundException $e){
return response()->json(['error' => 'User not found'], 400);
}
还有另一种方法可以在 Handler.php 中捕获各种类型的异常,位于 app/Exceptions/Handler。php 那里你可以捕获异常和 return 任何你想要的在 render
函数中。
例如,您可以在 return parent::render($request, $e):
之前添加该函数
if($e instanceof ModelNotFoundException)
{
return new Response(['message' => 'We haven\'t find any data'], 204);
}
例如我使用:
return User::findOrFail($id);
当 $id
行不存在时,我得到异常。
如何在 Json 响应中 return 这个异常?它现在 returns HTML Laravel 页。
我需要像这样的东西:
{"error", "No query results for model"}
来自他们的文档:
Sometimes you may wish to throw an exception if a model is not found. This is particularly useful in routes or controllers. The findOrFail and firstOrFail methods will retrieve the first result of the query. However, if no result is found, a Illuminate\Database\Eloquent\ModelNotFoundException will be thrown.
因此,您可以捕获该异常,或者使用简单的 Find
方法。找不到就returnfalse,你可以相应处理。
return User::find($id);
更新:
选项 1:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
选项 2:
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
您应该查看 Handler file 的 render
方法。您可以在此处测试异常 class 并根据它 return 以 Json 格式
您可以处理各种类型的异常,在这种情况下可以使用 ModelNotFoundException 处理该异常
try{
$user = User::findOrFail($id);
}catch(ModelNotFoundException $e){
return response()->json(['error' => 'User not found'], 400);
}
还有另一种方法可以在 Handler.php 中捕获各种类型的异常,位于 app/Exceptions/Handler。php 那里你可以捕获异常和 return 任何你想要的在 render
函数中。
例如,您可以在 return parent::render($request, $e):
if($e instanceof ModelNotFoundException)
{
return new Response(['message' => 'We haven\'t find any data'], 204);
}