php实现的PDO异常处理操作分析


Posted in PHP onDecember 27, 2018

本文实例讲述了php实现的PDO异常处理操作。分享给大家供大家参考,具体如下:

异常处理:

PHP:默认为直接报错

MYSQL:默认为静默模式,错就错,不报错

PDO:默认为静默模式,错就错,不报错

以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)

要使用PDO异常处理,必须满足两个条件

1、需要将错误处理模式变成异常模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

2、所有可能出错的语句都必须放到错误捕捉语句块里

try{
   //错误捕捉语句块
   //凡是有可能出现错误的语句都放在这
   //一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception $e里面
}catch(PDOExecption $e){
   //将错误信息进行处理
}

例如:

try{
  //连接认证
  $pdo = new PDO('mysql:host=localhost;dbname=project','root','root');
  //设置错误处理模式
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  //组织SQL
  $sql= "update pro_student set s_age = 123 where s_id = 20";
  $res = $pdo->exec($sql);
}catch(PDOException $e){
  //var_dump($e);
  //告诉用户在哪个文件的哪一行出现了什么样的错误
  echo '出现异常:<br/>';
  echo '错误出现的位置:' . $e->getFile() . $e->getLine() . '<br/>';
  echo '错误原因:' . $e->getMessage();
  var_dump($e->getTrace());//获取完整的错误数据
  exit;
}

有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。

语法:throw new PDOException;

$sql = "select * from pro_student where s_id = 20";
$stmt = $pdo->query($sql);
if($stmt->fetchColumn(4) > 100) throw new PDOException; //抛出异常,立马跳转到catch语句块
else{
  echo '没有问题';
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php与php MySQL 之间的关系
Jul 17 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
PHP使用QR Code生成二维码实例
Jul 07 PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
CI框架附属类用法分析
Dec 26 #PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 #PHP
PHP使用SOAP调用API操作示例
Dec 25 #PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 #PHP
You might like
php框架Phpbean说明
2008/01/10 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
python常用知识梳理(必看篇)
2017/03/23 Python
3分钟学会一个Python小技巧
2018/11/23 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
实习护士自我鉴定
2013/10/13 职场文书
中文系学生自荐信范文
2013/11/13 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
高中生期末评语
2014/01/28 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Golang 并发下的问题定位及解决方案
2022/03/16 Golang