php - 如何在 Laravel 中处理服务器端异常
问题描述
如何处理 Laravel 上的服务器端异常?我正在创建一个更新 API,并且我传递了一个错误的值来处理异常,但我无法使用 try-catch 块捕获该错误。有人能帮我吗?下面是代码:
{
"user_id" : "15835943395e63bb63c449d",
"changes" :{
"username" : "new username",
"name" : "new name",
"statuss" : "inactive"
}
}
所以如您所见,我正在尝试传递一个 Invalid 字段,即status实际是status。
这是我处理此问题的代码:
try{
$json = json_decode($changes,true);
$update = 'SET ';
$columns = [];
$values = [];
$pdo = DB::connection()->getPdo();
foreach ($json as $key => $value) {
$columns[]=$key;
$values[]=$value;
$update .= $key . '=?,';
}
$update = substr($update, 0, -1);
$sql = "update users ".$update." where user_id='".$request->input('user_id')."'";
$sth = $pdo->prepare($sql, array(\PDO::ATTR_CURSOR => \PDO::CURSOR_FWDONLY));
$sth->execute($values);
}
catch (Exception $e) {
echo $e;
}
但我没有得到邮递员的任何东西。
这是快照:
提前致谢。
解决方案
捕获任何sql
语法或查询错误的最简单方法是Illuminate\Database\QueryException
在为查询提供闭包之后捕获:
try {
$json = json_decode($changes,true);
$update = 'SET ';
$columns = [];
$values = [];
$pdo = DB::connection()->getPdo();
foreach ($json as $key => $value) {
$columns[]=$key;
$values[]=$value;
$update .= $key . '=?,';
}
$update = substr($update, 0, -1);
$sql = "update users ".$update." where user_id='".$request->input('user_id')."'";
$sth = $pdo->prepare($sql, array(\PDO::ATTR_CURSOR => \PDO::CURSOR_FWDONLY));
$sth->execute($values);
} catch(\Illuminate\Database\QueryException $ex){
dd($ex->getMessage());
// Note any method of class PDOException can be called on $ex.
}
如果有任何错误,程序将die(var_dump(...))
根据需要执行任何操作。
\
注意:对于命名空间,如果类不作为use
语句包含,则需要首先。
推荐阅读
- php - 变量未使用指定的 id
- rust - `std::alloc::Allocator` 不满足
- flutter - Flutter : PageView.builder 到另一个页面
- spring-boot - 在 Spring Boot 中读取完整的查询参数字符串
- javascript - Javascript / HTML 问题:从表单中获取输入值,并使用它将用户发送到 URL
- create-react-app - 从 create-react-app 中的预缓存中过滤掉资产
- javascript - React Router:单击链接/按钮时如何重定向到不同的组件?
- opencl - 使用路径跟踪渲染体素时出现问题
- go - Go 中 *nameOfStruct 和 []nameOfStruct 的区别(* 和 [])
- interpolation - 如何让散景从 3 种颜色中插入调色板