PDO 全称 PHP Data Objectphp
------------------ 错误处理 -------------------------mysql
php 的 mysql 扩展对于 mysql 执行中的错误,并不报错显示在页面上。默认是“静默模式”。若是要显示错误到页面上,须要使用函数 mysql_error()sql
if( !mysql_query("select * from ") ){数组
echo mysql_error();函数
}测试
PDO 类对错误的处理默认也是“静默模式”。要输出错误信息,也须要手动输出。编码
$pdo->errorCode() //得到错误的编码对象
$pdo->errorInfo() //错误信息集合,包含三个元素的索引数组索引
PDO 支持三种错误处理模式: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();
}
其实,异常处理就是用面向对象的语法来处理错误。用通常的面向过程的方法也是能够,只是面向对象的语法比较高级。因此,错误处理方式分红两种:标准错误处理,异常错误处理。