开发者社区> 问答> 正文

PHP中 PDO 的错误模式,ERRMODE_EXCEPTION 和 ERRMODE_WARNING 区别是什么?

PDO::ERRMODE_EXCEPTION PDO::ERRMODE_WARNING 区别是什么?

我怎么看了以后,觉得这俩除了反馈信息的格式不一样外,别的看起来都一样?

就是讲解的时候有个"抛出"一词,谁可以简单的跟我说说什么区别?

展开
收起
a123456678 2016-07-04 17:39:49 2819 0
1 条回答
写回答
取消 提交回答
  • 错误模式说明:
    异常模式:
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    这个模式需要配合 try 使用 :
    一旦出错,就会:

    创建一个对象,$e 也可以随便命名,从 $e->getMessage() 获取错误信息;
    采取动作;
    try{

    
    要执行的命令...
    

    }catch(PDOException $e){

    echo "执行命令失败:".$e->getMessage();
    失败后的动作...

    }
    这个其实等于 缺省模式的 if($pdo->errorInfo()[2]) ...

    创建PDO的时候,为什么也用 try?
    因为这时候连PDO对象都没有,所以也不能设置错误模式,所以可以用try,
    一旦PDO创建成功,错误模式就成了 缺省模式,也就不能用try了.

    缺省模式:
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

    这个出错,会给 $pdo->errorCode() 和 $pdo->errorInfo()[2] 赋值;

    可以用 if($pdo->errorInfo()[2])和if($pdo->errorCode()) 判断脚本是不是出错.

    如果不出错,上面都是空的;

    警告模式:
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    这个会echo出一个错误信息,打乱了脚本;
    学习调试的时候使用比较好;
    真用起来的时候,很多时候判断不出到底脚本有没有出错;

    2019-07-17 19:51:00
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载