PDO 错误机制|学习笔记

简介: 快速学习 PDO 错误机制

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第三阶段PDO 错误机制】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/713/detail/12741


PDO 错误机制

 

1、目标

PDO的一个错误机制,在异常学习中PHP其实也有一些错误处理的模式,它默认的是警告,出了错就直接报错,PDO是如何来实现这些错误的一个控制,变成一种我们可以控制的一种方式?就要了解PDO的一个错误机制。

目标:了解PDO错误机制这种机制,理解不同机制对应的效果。

2、概念&示例

这个概念指PDO在使用过程中,如果运行时候出现错误(大多的是SQL指令执行错误)的时候,那么PDO对应的处理方式就是它自己的错误机制,PDO提供三种错误机制,是通过一个PDO的常量PDO::ALTR_ERRMODE来选择的,这个属性常量的值对应三种,分别是如下:

1、PDO::ERRMODE_SILENT:静默模式,出错了不处理(默认的)

2、PDO::ERRMODE_WARNING:警告模式,出错了立马给出错误提示

3、PDO::ERRMODE_EXCEPETION:异常模式,出错了将错误交给异常PDOException对象

来具体看看这三种模式。第一个模式PDO::ERRMODE_SILENT,,执行一个错误,查看它的处理效果,比如输入:

第一个模式:$pdo=newPDO(_’mysql:host=locallhost;port=3306;dbname=db_2’’root’,’root’);

$pdo->exec(’insert into t_40 values()_’);#错误,但是不会报错

运行之后显示没有任何错误,这就是静默的处理方式,对开发者是致命的,拿不到错误,不知道哪里出错。

image.png第二个模式:警告模式$pdo=newPDO(_’mysql:host=locallhost;port=3306;dbname=db_2’’root’,’root’);

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING)

$pdo->exec(’insert into t_40 values()_’);#错误:系统直接报错

它里面有个set Attribute,然后对应的这个常量,然后设置一个对应的值,不是把这个值赋给常量,常量是不能被复制的,它只是通过这个常量来判定你要做什么事情,然后再找出你的值去针对的去解决。其实里面有很多switch, switch设置为警告模式,再来运行同样的代码警告模式,需要主动告知PDO。所以这个代码先设定为警告模式,这样代码再往下面运行,有顺序先设定后运行,运行结果如下图,直接告诉warning 就报错了,所以警告这个效果很直接。

image.png第三个模式:$pdo=newPDO(_’mysql:host=locallhost;port=3306;dbname=db_2’’root’,’root’);

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPETION)

Try{

$pdo->exec(’insert into t_40 values()_’);#错误:被捕捉到

}catch(PDOException $e){

#进入到异常处理

}

第三种是异常模式,需要修改为异常模式,Try catch可能出现的错误,一定要用 exception 这个类的对象来做,因为它出错了,他出来的 PDOException $e 这个对象。异常模式就要捕获,否则,如果不补足的话,它放在外面就出错了,它也是扔出一个异常,

image.png运行结果如下图,最终又变成了直接一个输出,因为异常没人捕获,所以它就直接报错,告诉哪个地方报错了。

image.png

如果不用这种方式,就用catch 来捕捉,这个try必须进行捕获,捕获#PDO中的所有的错误发生,都会产生一个PDOException类对象,既然产生了这个类对象,再捕捉之后,可以理解为echo“来了”,“来了”之后就可以按照自己的逻辑去处理。这就是三种模式。

image.pngimage.png

当然可以看所谓的PDOException异常类。会发现它就是继承了runtimeException里面东西,runtime又继承Exception,所以就有一个架构,这个就是架构的过程,内容会发现三个类都一样,除了名字不一样,其他都一样。所以要掌握这种继承的一个架构这种方式。

总结:

PDO中提供了多种处理机制,静默模式,警告模式,异常模式,其中警告模式,异常模式需要设置,因为静默模式是默认的,PDO可以通过PDO::setAttribute()方法来设定错误模式,但是一定要找准对应的这些要设置的内容,比如ATTR_ERRMODE,可以输出它就是一个数字,定义的一个常量,但是用ATTR_ERRMODE,你能很明确的知道当时要干嘛,以及为什么,就是要让我们知道这种东西,不要乱来,你用我固定的东西我才能帮你,正确的设置,是为了保证我们内部的结构不用去处理一些错误代码,错误的东西可以直接忽略,就相当于没设置,可以给他随便他设置,就是PDO中的一个错误的模式D的三种类型。

相关文章
|
Java 微服务 Spring
@EnableDiscoveryClient注解的作用
@EnableDiscoveryClient注解的作用 @EnableDiscoveryClient 及@EnableEurekaClient 类似,都是将一个微服务注册到Eureka Server(或其他 服务发现组件,例如Zookeeper、Consul等)
2012 0
|
2月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
398 4
|
C语言
QT QtableView操作详解
本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删改查功能。
1296 0
QT QtableView操作详解
|
机器学习/深度学习 XML 分布式计算
大数据的概念
【10月更文挑战第16天】
687 4
|
关系型数据库 Linux 数据库
Linux系统之安装PostgreSQL数据库
Linux系统之安装PostgreSQL数据库
2730 1
|
人工智能 安全 搜索推荐
【专栏】虚拟现实(VR)如何重塑教育与培训的未来
【4月更文挑战第27天】本文探讨了虚拟现实(VR)如何重塑教育与培训的未来,分为三个部分:VR在教育的应用现状、提升学习体验和培训效果的方式,以及面临的挑战与展望。目前,VR已逐渐融入课堂,提供沉浸式学习体验,如历史和医学培训。通过沉浸感、交互性、安全模拟训练和个性化学习,VR提升了学习效果。然而,高成本、内容不足及真实性的验证仍是挑战。随着技术进步,VR将在教育领域发挥更大作用,与5G、AI结合,创造更高效的学习体验。
608 1
|
网络协议 数据安全/隐私保护 网络架构
提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透
提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透
328 2
|
机器学习/深度学习 决策智能
博弈论-nim 游戏
博弈论-nim 游戏
392 0
博弈论-nim 游戏
|
5G 网络架构
信号 ,手机信号和wifi信号区别,2.4GHz和5GHz,遥控器的种类有哪些
信号 ,手机信号和wifi信号区别,2.4GHz和5GHz,遥控器的种类有哪些
信号 ,手机信号和wifi信号区别,2.4GHz和5GHz,遥控器的种类有哪些
|
SQL 开发框架 前端开发
推荐一个在线视频学习、在线试题练习、在线同步考试开源系统
一个基于.Net开发的在线学习、考试系统。兼容PC、移动、微信等多端设备,方便学员随时随地学习,并支持分销、分润等营销功能。
410 0
推荐一个在线视频学习、在线试题练习、在线同步考试开源系统