您好,欢迎访问一九零五行业门户网

mysql - php pdo 缺省错误模式 和 例外模式,差不多,为什么弄两个?

先说 缺省模式
$pdo->setattribute(pdo::attr_errmode, pdo::errmode_silent);

我做的实验中,出错后,会给 $pdo->errorcode() 和 $pdo->errorinfo() 赋值;通过调用他们可以可以 看 错误的详细信息;
然后说例外模式
$pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception);try{}catch(pdoexception $e){ echo 执行命令失败:.$e->getmessage(); exit;}

会实例出一个 $e 对象,错误信息保存在这个属性里.
都是有错误信息,为什么要分两个属性?
回复内容: 先说 缺省模式
$pdo->setattribute(pdo::attr_errmode, pdo::errmode_silent);

我做的实验中,出错后,会给 $pdo->errorcode() 和 $pdo->errorinfo() 赋值;通过调用他们可以可以 看 错误的详细信息;
然后说例外模式
$pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception);try{}catch(pdoexception $e){ echo 执行命令失败:.$e->getmessage(); exit;}

会实例出一个 $e 对象,错误信息保存在这个属性里.
都是有错误信息,为什么要分两个属性?
/*错误模式说明:
◆异常模式: $pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception); 这个模式需要配合 try 使用 : 一旦出错,就会: 1.创建一个对象,$e 也可以随便命名,从 $e->getmessage() 获取错误信息; 2.采取动作; 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出一个错误信息,打乱了脚本; 学习调试的时候使用比较好; 真用起来的时候,很多时候判断不出到底脚本有没有出错;
*/
你太纠结了...这是为了方便使用者,为啥一定要有个为什么。就像是有些api通过参数可以选择返回json还是xml,有什么特别的意义吗?也是为了方便而已。
其它类似信息

推荐信息