如何在Laravel中处理本机异常?
例如,我使用:如何在Laravel中处理本机异常?,laravel,laravel-5,laravel-5.2,laravel-response,laravel-exceptions,Laravel,Laravel 5,Laravel 5.2,Laravel Response,Laravel Exceptions,例如,我使用: return User::findOrFail($id); 当不存在带有$id的行时,我得到异常 如何在Json响应中返回此异常?它现在返回HTML Laravel页面 我需要像这样的东西: {"error", "No query results for model"} 根据他们的文件: 有时,如果找不到模型,您可能希望抛出异常。这在路由或控制器中特别有用。findOrFail和firstOrFail方法将检索查询的第一个结果。但是,如果未找到任何结果,将引发Illumb\D
return User::findOrFail($id);
当不存在带有$id
的行时,我得到异常
如何在Json响应中返回此异常?它现在返回HTML Laravel页面
我需要像这样的东西:
{"error", "No query results for model"}
根据他们的文件: 有时,如果找不到模型,您可能希望抛出异常。这在路由或控制器中特别有用。findOrFail和firstOrFail方法将检索查询的第一个结果。但是,如果未找到任何结果,将引发Illumb\Database\Eloquent\ModelNotFoundException 因此,您可以捕获该异常,或者使用简单的
Find
方法。如果没有找到,它将返回false,因此您可以相应地处理它
return User::find($id);
更新:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
选项1:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
选项2:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
根据他们的文件: 有时,如果找不到模型,您可能希望抛出异常。这在路由或控制器中特别有用。findOrFail和firstOrFail方法将检索查询的第一个结果。但是,如果未找到任何结果,将引发Illumb\Database\Eloquent\ModelNotFoundException 因此,您可以捕获该异常,或者使用简单的
Find
方法。如果没有找到,它将返回false,因此您可以相应地处理它
return User::find($id);
更新:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
选项1:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
选项2:
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
您应该查看
render
的方法。您可以在这里测试异常类,并根据它以Json格式返回不同的响应。您应该查看。您可以在这里测试异常类,并根据它以Json格式返回不同的响应您可以处理各种类型的异常,在这种情况下,可以使用ModelNotFoundException处理该异常
try{
$user = User::findOrFail($id);
}catch(ModelNotFoundException $e){
return response()->json(['error' => 'User not found'], 400);
}
还有另一种方法可以在app/exceptions/Handler.php上的Handler.php中捕获各种类型的异常,您可以捕获异常并在render
函数中返回您想要的任何内容
例如,插入该函数,您可以在返回parent::render($request,$e):
您可以处理各种类型的异常,在这种情况下,可以使用ModelNotFoundException来处理该异常
try{
$user = User::findOrFail($id);
}catch(ModelNotFoundException $e){
return response()->json(['error' => 'User not found'], 400);
}
还有另一种方法可以在app/exceptions/Handler.php上的Handler.php中捕获各种类型的异常,您可以捕获异常并在render
函数中返回您想要的任何内容
例如,插入该函数,您可以在返回parent::render($request,$e):
我知道这一点,但它返回我不清楚的错误,包装在HTML代码你是什么意思?它抛出一个异常,如果没有正确捕获,您将看到一个HTML页面,说明抛出了一个异常。这就是异常的工作方式。要捕获它,您需要将代码包装在try/catch块中。另一种方法是简单地使用find方法。我的意思是,我需要返回没有API Mobile HTML代码的消息。我知道这一点,但它返回我不清楚的错误,用HTML代码包装。你是什么意思?它抛出一个异常,如果没有正确捕获,您将看到一个HTML页面,说明抛出了一个异常。这就是异常的工作方式。要捕获它,您需要将代码包装在try/catch块中。另一种方法是简单地使用find方法,我的意思是我需要返回消息,而不需要API mobile的HTML代码