PDO 的错误处理

PDO 全称 PHP Data Object

​------------------    错误处理  -------------------------

​​php 的 mysql 扩展对于 mysql 执行中的错误,并不报错显示在页面上。默认是“静默模式”。如果要显示错误到页面上,需要使用函数 mysql_error()

if( !mysql_query("select * from ") ){

    echo mysql_error();

}

PDO 类对错误的处理默认也是“静默模式”。​要输出错误信息,也需要手动输出。

$pdo->errorCode() //获得错误的编码

$pdo->errorInfo() //错误信息集合​,包含三个元素的索引数组

 

PDO 支持三种错误处理模式:

静默模式,警告模式,异常模式

静默模式是默认的,需要修改的话,通过设置 PDO 对象的属性完成。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)​

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

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)​​

警告模式:

警告模式也不是什么特别的东西哦,错误发生时会报一个警告,就只是一个警告,默认情况下,php对警告的处理是输出页面,可以自己定义处理函数。

异常模式:

​异常处理分成三步:抛出异常,监听异常,捕获异常。

​​其实异常就是错误。抛出的错误就是异常。错误处理是:触发,处理。这里的的触发就是异常处理的“抛出”。

抛出:throw

监听:try

捕获:catch​

​异常的工作原理是这样的,把一些信息放到一个类的对象里面,这就是异常处理的原理。这个类叫异常类。这些信息叫异常信息。这没有什么特别的。这个异常类是 Exception .

 

一般的异常处理:

​try{

  $age = 28;​

  if( $age > 26 ){

    throw new Exception("年龄过大");

  } 

}catch( Exception $e ){

  echo $e->getMessage();

}

throw 会抛出一个异常对象,这个对象是异常类的对象,所以写为 new Exception 。​

try 会监听写在它里面的异常。​catch 会捕获它的参数对应的异常。这里 catch 的参数是 Exception $e ,这种写法表示这个参数是一个对象,而且只能是 Exception 类的对象。这是 php 语法里面对参数的限制。这个异常类可以是 Exception 或者 它的子类。如果是它的子类,那么 throw new 的类也应该是 ​Exception 类的子类(我是这么想的,未测试)。

 

PDO 的异常处理:​​

​​try{

  $pdo->query("set names "); //不需要抛出异常,可能是在query函数中抛出的

  echo '错误了'; //这句不会输出​,抛出异常后程序挂起,必须处理异常,处理异常后这句也不执行。

}catch( PDOException $e ){  //PDOException类是 Exception类的子类的子类

  echo $e->getMessage();

}

其实,异常处理就是用面向对象的语法来处理错误。用一般的面向过程的方法也是可以,只是面向对象的语法比较高级。所以,错误处理方式分成两种:标准错误处理,异常错误处理。

转载于:https://www.cnblogs.com/wangjinke/p/5849978.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值