错误抑制运算| 学习笔记

简介: 快速学习错误抑制运算。

开发者学堂课程【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. 如果错误是一个过程:那么需要先将过程使用()包起来,然后进行抑制

相关文章
|
IDE API 开发工具
通过IDE插件体验阿里云OpenAPI的高效集成, 精品礼品等你来拿!
轻量级的开放API工具——Alibaba Cloud Developer Toolkit及Alibaba Cloud API Toolkit。这些插件支持快速查阅阿里云产品的开放API,提供API调试与SDK示例生成等功能,帮助开发者轻松集成阿里云服务。您可通过JetBrains Marketplace或VS Code Marketplace搜索安装,完成身份验证后即刻体验。欢迎分享您的使用反馈,有机会获得精美礼品!
|
机器学习/深度学习 Python 文件存储
fast.ai 机器学习笔记(一)(3)
fast.ai 机器学习笔记(一)
248 1
fast.ai 机器学习笔记(一)(3)
|
PyTorch 算法框架/工具
ShuffleNet v2网络结构复现(Pytorch版)
ShuffleNet v2网络结构复现(Pytorch版)
ShuffleNet v2网络结构复现(Pytorch版)
|
开发框架 编译器 开发者
QT环境搭建详解及实例展示
QT环境搭建详解及实例展示
412 0
|
Java 调度
【Java基础】 多线程
Java、多线程编程
82 0
|
Python
基于flask-oidc的OIDC协议授权码模式单点登录SSO实现
基于flask-oidc的OIDC协议授权码模式单点登录SSO实现
598 0
|
消息中间件 Java
springboot rabbitmq 找不到队列
springboot rabbitmq 找不到队列
206 0
|
机器学习/深度学习 资源调度 PyTorch
卷积神经网络中的Conv层和BN层融合细节
卷积神经网络中的Conv层和BN层融合细节
483 0
|
前端开发 JavaScript
vue3 使用axios get方式使用
在Vue3中使用Axios库进行GET请求的方法如下: 首先需要导入Axios库:
600 0
|
机器学习/深度学习 PyTorch TensorFlow
7个用于机器学习和数据科学的基本 Python 库
Python是AI社区事实上的编程语言。它很容易学习,一旦你精通,编写程序是轻而易举的。 在很大程度上,由于其开源库,Python用户可以操作数据,原型模型,分析输出以及执行许多其他机器学习和数据科学任务。
320 0