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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
PHP分页显示制作详细讲解
Dec 05 PHP
PHP SEO优化之URL优化方法
Apr 21 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
php继承的一个应用
Sep 06 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
Jul 02 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
Yii框架核心组件类实例详解
Aug 06 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
关于时间计算的结总
2006/12/06 PHP
event.srcElement 用法笔记e.target
2009/12/18 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
对python中return和print的一些理解
2017/08/18 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
python os用法总结
2018/06/08 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
我就是这样学习Python中的列表
2019/06/02 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
python中upper是做什么用的
2020/07/20 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
教师教育心得体会
2016/01/19 职场文书
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python