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写的小东西
Dec 06 PHP
php错误、异常处理机制(补充)
May 07 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
深入array multisort排序原理的详解
Jun 18 PHP
在PHP中使用redis
Nov 04 PHP
Drupal读取Excel并导入数据库实例
Mar 02 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP filesize函数用法浅析
Feb 15 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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
vue中@change兼容问题详解
2019/10/25 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
Python网络爬虫实例讲解
2016/04/28 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python自动识别文本编码格式代码
2019/12/26 Python
python实现猜拳游戏
2020/03/04 Python
《绿色蝈蝈》教学反思
2014/03/02 职场文书
工作保证书范文
2014/04/29 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
搭建Yolov5服务器
2022/04/30 Servers
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers