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 无限极分类
Mar 27 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
解析php中反射的应用
Jun 18 PHP
如何修改和添加Apache的默认站点目录
Jul 05 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
php调整服务器时间的方法
Apr 03 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 PHP
Memcached介绍及php-memcache扩展安装
Apr 01 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快递单号查询接口使用示例
2014/05/05 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
js注意img图片的onerror事件的分析
2011/01/01 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
bootstrap table实例详解
2017/01/06 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Pandas中resample方法详解
2019/07/02 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
Python random模块的使用示例
2020/10/10 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
信息技术课后反思
2014/04/27 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
社保转移委托书范本
2014/10/08 职场文书
教代会闭幕词
2015/01/28 职场文书
田径运动会广播稿
2015/08/19 职场文书
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL