《PHP核心技术与最佳实践》读书笔记(异常和错误处理篇)

来源:互联网 发布:数据分析平台交互设计 编辑:程序博客网 时间:2024/05/16 01:11

异常

大型程序中,如果每次调用都去逐一检查错误,会使代码变得冗长复杂,到处充斥着if —else,严重降低代码的可读性。
PHP只有在你主动throw后,才能捕获异常, 之所以和java之间有差距,在java里,异常是唯一的错误报告方式,而在php中却不是这样的,通俗一点讲,就是这两种语言对异常和错误的界定存在分歧。

  • 以下是php主动获取异常的一个实例
class emailExceprion extends exception {    class pwdException extends exception {        function __toString() {            return "<div class=\"error\"Exception{$this->getCode()}":{$this->getMessage()}            in File:{this->getFile()}on line:{$this->getLine()}</div>";        }    }}function reg($reginfo = null) {    if(empty($reginfo) || !isset($reginfo)) {        throw new Exception("参数非法");    }    if(empty($reginfo['email])) {        throw new emailException("邮件为空");    }    echo "注册成功";}try {    reg(array('email'=>'***','pwd'='****','repwd'=>'***'))}catch(emailException $ee) {    echo $ee->getMessage();}catch(Excetion $e) {    echo $e->getTraceAsString();    echo PHP_EOL;}

php异常应用的场景:
1. 对程序的悲观预测:程序员认为自己的代码无法一一处理各种可预见,不可预见的情况,那就可以进行异常处理。
2. 程序的需要和对业务的关注:程序员希望业务代码中不充斥一大堆打印调试的处理,就会用异常机制。或者是一些业务上需要定义一些异常,比如上班迟到。

在健壮性这点上,php是不足的,java是一种面向企业级开发的语言,强调健壮性。php中的异常机制是不足的,绝大多数情况下无法自动抛出异常。

错误级别

  • deprecated 最低级别的错误,表示不推荐,不建议(比如正则匹配上)
  • notice(比如使用变量未定义)
  • warning级别比较高的错误,语法出现不恰当才会报此错误。
  • fetal error,致命错误,导致php流程终结,后面代码不再执行。
  • prase error,语法检查阶段错误,php代码无法通过语法检查。

错误处理机制

php有一套错误处理机制,可以使用set_error_handler接管PHP错误处理,也可以使用tigger_error函数主动抛出一个错误。

0 0
原创粉丝点击