php 异常处理机制 例子
从业务的角度讲,异常偏重于保护业务数据一致性,并且强调对异常业务的处理。如果代码种只是象征性地 try……catch, 然后打印一个错误,最后over。这样的异常不如不用,因为其没有提想异常思想。
<?php // 合理的异常处理: try{ // 可能出错的代码段 if(出错判断1) throw(异常1); if(出错判断2) throw(异常2); }catch(异常1){ //必须的补救措施 }catch(异常2){ // 补救措施 记录log } ?>
<?php // exception 处理例子 class emailException extends exception{ } class pwdException extends exception{ function __toString(){ return "<div id=\"error\">Exception{$this->getCOde()}: {$this->getMessage()} in File:{$this->getFIle()} on line : {$this->getLine()}</div>"; } } function reg($reginfo = null){ // 此处抛出异常的处理顺序与后面的try...catch 的顺序要相同,不同的话会捕捉不到正确的异常,默认只捕捉到Exception if(empty($reginfo['email'])){ throw new emailException ('blank email'); } if($reginfo['pwd'] != $reginfo['repwd']){ throw new pwdException('two pwd is not the same'); } if(empty($reginfo) || isset($reginfo)){ throw new Exception('error params'); } echo 'success'; } try{ reg(array('email'=>'aaa@aaa.com', 'pwd'=>'111111', 'repwd'=>'11111')); //reg(); }catch(emailException $ee){ echo $ee->getMessage(); }catch(pwdException $ep){ echo $ep; echo $PHP_EOL,'DIFF DEAL'; }catch(Exception $e){ echo $e->getTraceAsString(); echo PHP_EOL, 'other exception , deal the same way'; } ?>