[PHP] PDO 提供了三种不同的错误处理模式
1.PDO::ERRMODE_SILENT 静默模式,不终止代码,只能使用 $pdo->errorCode() 和 $pdo->errorInfo() 获取错误信息 , 这个是默认情况下 , 也就是不停断 , 不记日志
注意这种形式下不容易错误排查
2.PDO::ERRMODE_WARNING 警告模式,不终止代码,在错误日志中出现warning类型的错误信息
/var/log/apache/xxx-error.log
[Fri Mar 09 16:02:50 2018] [error] [client 61.135.152.130] PHP Warning: PDOStatement::execute(): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sinanet.mass_list' doesn't exist in /mnt/publi
3.PDO::ERRMODE_EXCEPTION 异常模式,终止代码,抛出异常信息,使用try()catch(){}捕获
记录到应用日志里/var/log/sinamail/webmail.log
Mar 9 15:54:13 vm-228-187 webmail: 2018-03-09 15:54:13 xxx xxxx 61.135.152.130 /usr/local/wa.php - APP_RUN_ACTION msg=>SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sinanet.mass_list' doesn't exist,code=>42
异常模式另一个非常有用的是,相比传统 PHP 风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。
相关文章
- Orleans 知多少 | 4. 有状态的Grain
- Orleans 知多少 | 3. Hello Orleans
- 集群环境下,你不得不注意的ASP.NET Core Data Protection 机制
- .NET Core 使用 K8S ConfigMap的正确姿势
- ASP.NET Core知多少(13):路由重写及重定向
- Orleans 知多少 | 2. 核心概念一览
- Orleans 知多少 | .NET 分布式框架
- eShopOnContainers 知多少[10]:部署到 K8S | AKS
- .NET Core + K8S 玩转容器编排
- eShopOnContainers 知多少[9]:Ocelot gateways
- 响应式编程知多少 | Rx.NET 了解下
- eShopOnContainers 知多少[8]:Ordering microservice
- MediatR 知多少
- eShopOnContainers 知多少[7]:Basket microservice
- .NET 反编译调试神器:dnSpy了解一下
- eShopOnContainers 知多少[6]:持久化事件日志
- eShopOnContainers 知多少[5]:EventBus With RabbitMQ
- eShopOnContainers 知多少[4]:Catalog microservice
- eShopOnContainers 知多少[3]:Identity microservice
- eShopOnContainers 知多少[2]:Run起来