Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Laravel中处理本机异常?_Laravel_Laravel 5_Laravel 5.2_Laravel Response_Laravel Exceptions - Fatal编程技术网

如何在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代码