开发者学堂课程【PHP 基础入门课程(上) :错误抑制运算】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/709/detail/12602
错误抑制运算
内容介绍:
一、了解错误抑制符的作用
二、灵活运用错误抑制符来实现可能出现的错误抑制
提问:我们先思考这个问题,在我们算数运算的时候,如果说我们除数,后面除号后面的那个数,如果他为零的话,这个时候就是错的,怎么办呢?但这种数据我又没有办法,或者说我不想提前控制,怎么办呢,我们可以利用什么呢?
回答:错误抑制符进行抑制。当然还有一种,就是我们应该提前判断好,不要让他出现这种情况,这其实才是最好的,但是出现了这种,我们就可以用错误抑制符来实现。
一、了解错误抑制符的作用
1、概念
- 在可能出现错误的代码前使用错误抑制符,让错误不会报出来。
- 错误抑制只需要在可能出现的错误的表达式之前使用即可
- 错误抑制符只有一个:@
- 错误抑制符只针对就近的目标,如果是针对结果,需要使用() {优先级考虑}。
- 错误抑制符只能抑制简单错误(notice、warning)
这个错误抑制符很简单,正常我们说要处理一个数,是拿这个去除,除的话怎么办,前面加个错误抑制符就可以了,就可以去抑制这类的一个错误。
错误抑制符能抑制什么呢?
抑制简单错误,所谓的简单错误就是通知级别的,Warning 警告级别的,如果出现了什么 farrah 致命的错误,那他肯定用不了,已经致命了,后面代码都没法运行,就没有意义了。
二、灵活运用错误抑制符来实现可能出现的错误抑制
1、示例
写一下代码,就让他出错,{<?Php},错误抑制符。
比如说我此时就想做一件事情,$a=10\0,被除数除以除数,那个除数为零时除以零应该是无限大,我们打开浏览器看一下,告诉我们警告,注意这是一个警告,除数为零,那也就是说我们拿零当除数不合适,因为他算不出来。所以此时,这种方式就是一种错误的。
我们应该进行一个错误抑制,后面出错了,十不能除以零,先看一下这个结果,好像没变化,发现怎么刷新都一样,不是说错误一直不能抑制错误码,这警告的错误也抑制不了吗?
再看看,@符合靠近十没错,零是没错,直接说十除以零是不是就有错了?
所以这种错误的原因是你抑制了一个没有错误的东西,而真正有错是这个过程,所以我们此时要做的话,得给他加上一个括号。
错误被抑制了不代表没错啊,代表有错,但是被抑制了,不会出现了,用户就看不到这个东西了,所以给用户一种比较好的感觉。
示例:
#正常处理
$r = 10 / o;
#报错:除数为0
#报错:除数为0
)$r = @10 / 0;
#报错:出错的位置是10 / 0这个过程,抑制的位置是10,无意义
#正确处理
$r = @(10 / 0);
#不报错:因为是过程出错
2、小结
- 错误抑制符是用来抑制可能出现的错误的
- 错误抑制符@应该用在出现错误的位置
a. 如果只是一个表达式错误:那么直接@
b. 如果错误是一个过程:那么需要先将过程使用()包起来,然后进行抑制