php中错误信息和异常信息区别

php中错误信息和异常信息区别

PHP中什么是异常:

程序在运行中出现不符合预期的情况,允许发生(你也不想让他出现不正常的情况)但他是一种不正常的情况,按照我们的正常逻辑本不该出的错误,但仍然会出现的错误,属于逻辑和业务流程的错误,而不是编译或者语法上的错误。

PHP中什么是错误:(推荐学习:PHP编程从入门到精通)

属于php脚本自身的问题,大部分情况是由错误的语法,服务器环境导致,使得编译器无法通过检查,甚至无法运行的情况。warning、notice都是错误,只是他们的级别不同而已,并且错误是不能被try-catch捕获的。

立即学习“PHP免费学习笔记(深入)”;

上面的说法是有前提条件的:

在PHP中,因为在其他语言中就不能这样下结论了,也就是说异常和错误的说法在不同的语言有不同的说法。

在PHP中任何自身的错误或者是非正常的代码都会当做错误对待,并不会以异常的形式抛出,但是也有一些情况会当做异常和错误同时抛出(据说是,我没有找到合适的例子)。

也就是说,你想在数据库连接失败的时候自动捕获异常是行不通的,因为这就不是异常,是错误。但是在java中就不一样了,他会把很多和预期不一致的行为当做异常来进行捕获。

PHP异常处理很鸡肋?

在上面的分析中我们可以看出,PHP并不能主动的抛出异常,但是你可以手动抛出异常,这就很无语了,如果你知道哪里会出问题,你添加if else解决不就行了吗,为啥还要手动抛出异常,既然能手动抛出就证明这个不是异常,而是意料之中。

以我的理解,这就是PHP异常处理鸡肋的地方(不一定对啊)。所以PHP的异常机制不是那么的完美,但是使用过框架的同学都知道有这个情况:你在框架中直接写开头那段php“自动”捕获异常的代码是可以的,这是为什么?

看过源码的同学都知道框架中都会涉及三个函数:register_shutdown_function,set_error_handler,set_exception_handler三个黑科技,通过这几个函数我们可以实现PHP假自动捕获异常和错误。

把错误以异常的形式抛出(不能完全抛出)

由上面的讲解我们知道,php中的错误是不能以异常的像是捕获的,但是我们需要让他们抛出,已达到扩展 try-catch的影响范围,我们前面讲到过set_error_handler() 方法,他是干嘛用的,他是捕获错误的,所以我们就可以借助他来吧错误捕获,然后再以异常的形式抛出,ok,试试下面的写法:

getMessage();    }?>

登录后复制

在php中最好不要简单的在可能出错的地方直接抛出异常,在一些框架中,重写了上述的方法,异常和错误可以正常抛出

以上就是php中错误信息和异常信息区别的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2157593.html

(0)
上一篇 2025年2月25日 07:01:43
下一篇 2025年2月23日 19:22:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php中的pear是什么

    pear就是为php扩展与应用库(php extension and application repository),它是一个php扩展及应用的一个代码仓库。 为什么要使用PEAR? PHP是一个非常优秀的脚本语言,简洁、高效,随着4.0的…

    2025年2月25日
    300
  • PHP动态网页设计原理详细介绍

    所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操…

    2025年2月25日
    200
  • php中的变量都以什么开头

    PHP中的所有变量都是用“$”开头的 $a=5;$b=6 登录后复制 php变量命名规则(推荐学习:PHP编程从入门到精通) 1、区分大小写 $A和$a$ 是两个不同的变量,(系统内置结构和关键字,用户自定义类和函数名是区分大小写)。 立即…

    2025年2月25日
    200
  • php中的单元测试是什么

    phpunit是一个轻量级的php测试框架。它是在php5下面对junit3系列版本的完整移植,是xunit测试框架家族的一员(它们都基于模式先锋kent beck的设计)。 单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多…

    2025年2月25日
    200
  • php中的对象分为哪两种

    内置对象:由PHP提供的,不依赖于宿主环境对象,这些对象在程序执行前就已经存在了。即无论在何种环境中都存在内置对象。 自定义对象:顾名思义,就是开发人员自己定义的对象。PHP允许使用自定义对象,使PHP应用及功能得到扩充 对象初始化(推荐学…

    2025年2月25日
    200
  • PHP中的复合数据类型是哪两种

    php中,复合数据类型有两种,一种是数组,另一种是对象。 数组(array):一组类型相同数据的集合; 对象(object):对象是类的实例,通常使用new关键字来创建。 数组(array)(推荐学习:PHP编程从入门到精通) 立即学习“P…

    2025年2月25日
    200
  • php源码搭建网站详细步骤介绍

    php源码建站步骤: 1、首先在本地运行php源码,测试源码是否能运行正常。 2、购买域名和服务器,如果不会配置可以购买轻云服务器,有FTP账号和密码。 3、在万网下做域名解析,解析到你的服务器IP地址。 4、在服务器管理页面添加域名 立即…

    2025年2月25日
    200
  • PHP中的进程是什么概念

    进程就是一个程序在一个数据集上的一次动态执行过程。 进程一般由程序、数据集、进程控制块三部分组成。(推荐学习:PHP编程从入门到精通) 我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控…

    2025年2月25日
    200
  • PHP中的流程控制结构有哪些

    流程控制的定义 流程控制是控制程序的手段,如果程序没有了流程控制,就不会有程设计语言,大多数程序不是线性执行语句控制,如果程序需要和用户交流,要根据用户输入决定执行序列,甚至需要代码反复执行,这些都离不了流程控制。 在php中有三种基本的程…

    2025年2月25日
    200
  • php中的权限修饰符有哪些

    public 共有的;权限范围最大,所有都可以访问 protected 受保护的,继承的,权限第二,只能类自身和类的自类可以访问 private 私有的,被定义为private的成员,对于类内部所有成员都可见,没有访问限制。对类外部不允许访…

    2025年2月25日
    200

发表回复

登录后才能评论