PHP异常处理机制

异常与错误的区别

      关于异常处理这一块,在官方的手册上介绍的不够详细,所以我在这里再做一个相对详细一点的总结。

      首先要明白异常跟错误是两个不一样的概念,异常是出现正常逻辑之外的情况,而错误是指运行时出错了,比如,使用了一个未定义的变量等。异常需要抛出(throw)才能被捕捉到,而错误会导致程序执行终止。

      PHP默认情况下,在代码出现了错误,如notice warning等消息时,错误信息会被直接打印到浏览器上,这个时候你通过 try catch是捕获不到错误信息的。php的try catch只能捕获到你自己 throw new Exception(" ")抛出的错误,通过throw之后,程度会直接进入到catch中继续执行。如果你想抛弃php自身的错误处理机制,这个时候可以通过set_error_handler自定义一个函数用来处理,在这个函数中你可以抛出异常,然后再通过catch捕捉到异常。

有关PHP的错误处理可以查看我的上一篇文章:《PHP错误处理机制》

PHP异常介绍

      PHP异常一般是指在业务逻辑上出现的不合预期、与正常流程不同的状况,不是语法错误。

      PHP异常处理机制借鉴了java  c++等,但是PHP的异常处理机制是不健全的。异常处理机制目的是将程序正常执行的代码与出现异常如何处理的代码分离。异常主要有检测(try)、抛出(throw)和捕获(catch)等操作。

      PHP异常处理中需要注意的有,当代码中有throw出来的异常,则必须要catch到,也即是一个 try 至少要有一个与之对应的 catch。可以定义多个 catch 可以捕获不同的对象,php会按这些 catch 被定义的顺序执行,直到完成最后一个为止。而在这些 catch 内,又可以抛出新的异常。php的异常也像JAVA的异常的一样,可以在最外层catch捕捉,也可以在throw的地方捕捉。

      当一个异常被抛出时,其后的代码将不会继续执行,PHP 会尝试查找匹配的 "catch" 代码块。如果一个异常没有被捕获,而且又没用使用set_exception_handler()作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出未能捕获异常(Uncaught Exception ...)的提示信息。

还有 65% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 异常分类 异常是按照层级处理的,如何a调用b,在b中发生异常,正常流程是b会把异常抛给a,a如果也有try捕获异常...
    陈智涛阅读 298评论 0 0
  • 通俗编程——白话JAVA异常机制 - 代码之道,编程之法 - 博客频道 - CSDN.NEThttp://blog...
    葡萄喃喃呓语阅读 3,197评论 0 25
  • 异常(Exception)用于在指定的错误发生时改变脚本的正常流程。 什么是异常? PHP 5 提供了一种新的面向...
    josephok阅读 586评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 2017.9.26《角落里有阳光》 连续好几个早晨,阳光都来拜访我的角落,从我的办公桌到小哲的书桌,悄悄地,就像我...
    greatmovie阅读 155评论 0 0