try catch php_PHP异常处理详解

1、PHP中异常的独特性

PHP中的异常的独特性,即PHP中的异常不同于主流语言C++、java中的异常。在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了错误进行处理。这两种语言对异常和错误的界定存在分歧。什么是异常什么是错误,两种语言的设计者存在不同的观点。

PHP中的异常:

  是程序在运行中出现不符合预期的情况及与正常流程不同的状况。一种不正常的情况,按照正常逻辑本不该出的错误,但仍然会出现的错误,这是属于逻辑和业务流程的错误,而不是编译或者语法上的错误。

PHP中的错误:

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

  在PHP中遇到任何自身错误都会触发一个错误,而不是抛出异常。PHP一旦遇到非正常代码,通常都会触发错误,而不是抛出异常。因此,如果想要使用异常处理不可预料的问题,是办不到的。

典型例子:

1 <?php
2 
3 try {
4     echo 1/0;
5 } catch (Exception $e){
6     echo $e->getMessage();
7 }

结果:

v2-6c206229faf9ce3bbac446e9e371aa46_b.jpg

结果显示:

此时出现了一个警告级别的错误,程序终止。

结论:

PHP通常是无法自动捕获有意义的异常,它把所有不正常的情况都视作了错误,你要想捕获异常就得使用if....else结构,保证代码是正常的,然后判断进行手动抛出异常。

2、PHP中的错误级别

  PHP中的异常机制是不足的,绝大多数情况下无法自动抛出异常,必须使用if....else语句先进行判断,在进行手动抛出异常。

手动抛出异常的意义不大,是已经预料到的错误,这种方式将会使你陷入纷繁复杂的业务逻辑判断和处理中。

  因此我们可以通过一些特殊的函数来自定义错误处理函数,来接管PHP原生的错误处理函数,然后再进行抛出异常。

  接下来我们需要了解PHP中的一些错误。

错误显示控制:

  【ALL设置】

  全局:php.ini中设置display_error = on/off;

  局部:ini_set("display_error", true/false);

PHP.ini中display_errors = Off失效的解决   问题: PHP设置文件php.ini中明明已经设置display_errors = Off,但是在运行过程中,网页上还是会出现错误信息。   解决: 经 查log_errors= On,据官方的说法,当这个log_errors设置为On,那么必须指定error_log文件,如果没指定或者指定的文件没有权限写入,那么照样会输 出到正常的输出渠道,那么也就使得display_errors 这个指定的Off失效,错误信息还是打印了出来。于是将log_errors &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值