php基础学习之错误处理(其一)

一,错误处理的概念

错误处理指的是系统(或者用户)在执行某些代码的时候,发现有错误,就会通过错误处理的形式告知程序员,俗称报错


二,错误分类

  1. 语法错误:书写的代码不符合 PHP 的语法规范,语法错误会导致代码在编译过程中不通过,所以代码不会执行(parse error)
  2. 运行时错误:代码编译通过,但是在执行过程中出现一些条件上的不满足导致的错误(runtime error)
  3. 逻辑错误:书写的代码在逻辑上出现的错误,导致代码正常执行但是得不到想要的结果


三,错误代号(常量)

(一)系统错误

  • E_ERROR:fatal error,致命错误,代码在错误处会中断执行
  • E_WARNING:warning,警告错误,不影响代码执行,但可能得到意想不到的结果
  • E_PARSE:编译错误,代码不会执行
  • E_NOTICE:notice,通知错误,不影响代码执行

(二)php启动错误

  • E_CORE_ERROR: PHP 启动时遇到致命错误。这与 E_ERROR 类似,但是是由 PHP 引擎的核心部分引发的。
  • E_CORE_WARNING: PHP 启动时的非致命警告。这与 E_WARNING 类似,但是由 PHP 引擎的核心部分引发的。

(三)包含代码错误

  • E_COMPILE_ERROR: 编译时致命错误。这些错误由编译器检测到,通常在包含或包含代码时发生。
  • E_COMPILE_WARNING: 编译时的非致命警告。这些警告由编译器检测到,通常在包含或包含代码时发生。

(四)用户错误

  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE

用户在使用自定义错误触发时,会使用到的错误代码(系统用不到)

(五)其它错误

  • E_STRICT: 编码标准警告。这些警告指示代码中的编码标准问题,可能影响代码的兼容性或可维护性。
  • E_RECOVERABLE_ERROR: 可恢复的致命错误。这些错误表示脚本可以捕获并处理,但通常会导致脚本终止。
  • E_DEPRECATED: 代码已经过时的警告。这些警告表示使用了已经被废弃或不推荐使用的功能,可能会在未来的 PHP 版本中被移除。
  • E_USER_DEPRECATED: 用户生成的已弃用警告。这些警告由用户在代码中使用 trigger_error() 函数生成。
  • E_ALL,代表所有错误(通常在进行错误控制的时候使用较多),建议在开发过程中使用

(六)错误代号(常量)的底层原理

所有以E开头的错误代号(常量)其实都是二进制串,对于这一点,下面这段脚本给出了验证

<?php
var_dump(E_ERROR);//1 -> 0001
echo "<-E_ERROR<br>";var_dump(E_WARNING);//2 -> 0010
echo "<-E_WARNING<br>";var_dump(E_PARSE);//4 -> 0100
echo "<-E_PARSE<br>";var_dump(E_NOTICE);//8 -> 1000
echo "<-E_NOTICE<br>";var_dump(E_CORE_ERROR);//16 -> 0001 0000
echo "<-E_CORE_ERROR<br>";var_dump(E_CORE_WARNING);//32 -> 0010 0000
echo "<-E_CORE_WARNING<br>";var_dump(E_COMPILE_ERROR);//64 -> 0100 0000
echo "<-E_COMPILE_ERROR<br>";var_dump(E_COMPILE_WARNING);//128 -> 1000 0000
echo "<-E_COMPILE_WARNING<br>";var_dump(E_USER_ERROR);//256 -> 0001 0000 0000
echo "<-E_USER_ERROR<br>";var_dump(E_USER_WARNING);//512 -> 0010 0000 0000
echo "<-E_USER_WARNING<br>";var_dump(E_USER_NOTICE);//1024 -> 0100 0000 0000
echo "<-E_USER_NOTICE<br>";var_dump(E_STRICT);//2048 -> 1000 0000 0000
echo "<-E_STRICT<br>";var_dump(E_RECOVERABLE_ERROR);//4096 -> 0001 0000 0000 0000
echo "<-E_RECOVERABLE_ERROR<br>";var_dump(E_DEPRECATED);//8192 -> 0010 0000 0000 0000
echo "<-E_DEPRECATED<br>";var_dump(E_USER_DEPRECATED);//16384 -> 0100 0000 0000 0000
echo "<-E_USER_DEPRECATED<br>";var_dump(E_ALL);//32767 -> 0111 1111 1111 1111
echo "<-E_ALL<br>";

如果想进行一些错误的控制,则可以利用这一点来使用位运算进行操作

例如:

E_ALL & ~E_NOTICE:排除E_NOTICE之外的其它错误

E_WARNING | E_NOTICE:只显示E_WARNING和E_NOTICE错误


四,错误触发

(一)程序运行时触发

系统自动根据错误发生后,显示对应的错误信息,主要针对代码的语法错误和运行时错误

例如:进行除法运算时,误使除数为0

(二)人为触发

知道某些逻辑可能会出错,从而使用对应的判断代码来触发响应的错误提示

(*)trigger_error()函数

使用trigger_error()函数来认为触发错误

trigger_error()函数有两个参数,第一个参数接收一个字符串(该字符串将在错误触发时被输出);第二个参数接收一个错误代号(常量)(第二个参数可以不填,如果不填则默认是Notice级别,如果要填,则会填本篇【三.(四)】中描述到的三个用户自定义错误,用于修改错误的级别

  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE

下面是两个代码示例:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

策略分析:Atlassian Server版停止支持,Server版用户应该转向数据中心版本还是云版?

自2024年2月15日起&#xff0c;Atlassian将终止对Server产品提供支持。此政策并非突然之举&#xff0c;早在2021年&#xff0c;Atlassian就停售了Server产品的许可。对于国内用户而言&#xff0c;这一决定带来了巨大的影响&#xff0c;许多企业在得知消息后就开始积极准备迁移&…

npm install webpack 下载失败

1.可以换成国内镜像 使用淘宝npm镜像 npm install -g cnpm --registryhttps://registry.npm.taobao.org 在黑窗口执行这个语句 等执行完后&#xff0c;就可以通过cnpm 来安装我们的webpack&#xff0c; cnpm install webpack3.6.0 -g2. npm install certificate has expired…

编程笔记 html5cssjs 092 JavaScript 表单控件

编程笔记 html5&css&js 092 JavaScript 表单控件 一、常见的表单控件二、JavaScript在表单控件中的应用&#xff1a;三、获取单选按钮和复选框的值获取单选按钮的值&#xff1a;获取复选框的值&#xff1a; 四、应用示例小结 表单控件是HTML中的核心元素&#xff0c;用…

力扣刷题:383.赎金信

题目&#xff1a; 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&…

mac电脑监控软件哪个好

在Mac电脑使用日益普及的今天&#xff0c;企业对于Mac终端的安全管理需求也日益增长。Mac电脑监控软件作为一种有效的管理工具&#xff0c;能够帮助企业提高数据安全性和员工工作效率。 在众多Mac电脑监控软件中&#xff0c;域智盾软件以其卓越的功能和性能脱颖而出&#xff0c…

3D工业相机及品牌集合

3D相机可以获取物理世界的空间信息&#xff0c;即立体三维的物理信息&#xff0c;不仅可以拍摄到场景的二维图像&#xff0c;而且能获取物体之间的位置关系&#xff0c;再经过进一步深化处理&#xff0c;还能完成三维建模等应用。 3D相机三种方案 1、结构光 通常采用特定波长…

CentOS Nmap 用法

Nmap是一款开源的网络扫描工具&#xff0c;被广泛应用于网络管理、安全审计和漏洞扫描等领域。它支持多种扫描模式&#xff0c;包括TCP、UDP、SYN和ACK等&#xff0c;可以对目标主机进行端口扫描、操作系统检测、服务和版本识别、漏洞扫描等操作。 此外&#xff0c;Nmap还提供…

R语言数学建模(一)—— 基础知识

R语言数学建模&#xff08;一&#xff09;—— 基础知识 文章目录 R语言数学建模&#xff08;一&#xff09;—— 基础知识前言一、建模软件1.1 软件建模的基础1.2 模型的分类1.3 不同类型模型间的联系1.4 一些术语1.5 建模如何适应数据分析过程 二、Tidyverse基础2.1 tidyvers…

面试数据库篇(mysql)- 02定位慢查询和分析

定位慢查询 聚合查询多表查询表数据量过大查询深度分页查询表象:页面加载过慢、接口压测响应时间过长(超过1s) 方案一:开源工具 调试工具:Arthas 运维工具:Prometheus 、Skywalking 方案二:MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_tim…

实现前后端分离架构:优势与劣势

目录 引言 什么是前后端分离架构&#xff1f; 如何实现前后端分离架构&#xff1f; 1. 设计接口 2. 前端开发 3. 后端开发 4. 数据库设计 5. 接口对接与测试 6. 部署与维护 前后端分离架构的优势 前后端分离架构的劣势 结论 引言 在现代Web开发中&#xff0c;前后端…

从零学算法371

371.给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - ​​​​​​​&#xff0c;计算并返回两整数之和。 示例 1&#xff1a; 输入&#xff1a;a 1, b 2 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;a 2, b 3 输出&#xff1a;5 提示&#xff1a; -1000 …

网络安全之安全事件监测

随着人们对技术和智能互联网设备依赖程度的提高&#xff0c;网络安全的重要性也在不断提升。因此&#xff0c;我们需要不断加强网络安全意识和措施&#xff0c;确保网络环境的安全和稳定。 网络安全的重要性包含以下几点&#xff1a; 1、保护数据安全&#xff1a;数据是组织和…

【Web安全靶场】sqli-labs-master 1-20 BASIC-Injection

sqli-labs-master 1-20 BASIC-Injection 文章目录 sqli-labs-master 1-20 BASIC-Injection第一关-报错注入第二关-报错注入第三关-报错注入第四关-报错注入第五关-报错注入-双查询注入第六关-报错注入-双查询注入第七关-outfile写入webshell第八关-布尔盲注第九关-时间盲注第十…

【UE 材质】水晶材质

效果 步骤 1. 先在Quixel Bridge上下载冰纹理 2. 新建一个材质&#xff0c;这里命名为“M_Ice”并打开&#xff0c;添加如下纹理采样节点 继续添加如下节点 此时效果如下&#xff1a; 可以看到此时的材质颜色比较浅&#xff0c;如果希望颜色深一点可以继续添加如下节点 此时效…

React引入css的几种方式以及应用

1.直接引入css文件 import "./parent.css" 2.引入css模块&#xff0c;定义文件名[组件名.module.css]&#xff1b;该方式可避免类名的重复&#xff0c;每个组件都有独立的作用域&#xff0c;避免了全局污染&#xff0c;保证了类名的唯一性 import styles from &qu…

lv21 QT对话框3

1 内置对话框 标准对话框样式 内置对话框基类 QColorDialog, QErrorMessage QFileDialog QFontDialog QInputDialog QMessageBox QProgressDialogQDialog Class帮助文档 示例&#xff1a;各按钮激发对话框实现基类提供的各效果 第一步&#xff1a;实现组件布局&…

编程笔记 html5cssjs 090 JavaScript 文档对象模型

编程笔记 html5&css&js 090 JavaScript 文档对象模型 一、文档对象模型二、Javascript编程中文档对象的组成DOM 的主要组件&#xff1a;事件&#xff08;Events&#xff09;属性&#xff08;Properties&#xff09;方法&#xff08;Methods&#xff09; 三、编程应用四…

gprMax3.0随机介质建模

此处利用gprMax建立随机介质模型,采用matlab生成随机数组,保存为HDF5文件,此处为全代码,无需修改即可运行。在gprMax输入文件中使用#geometry_objects_read:读入自定义的随机模型 此文参考其他博主的自定义几何形状模块gprMax3.0建模时如何自定义目标的几何形状_#geomet…

為什麼使用海外動態代理IP進行網路爬蟲?

網路爬蟲作為獲取網路數據的重要工具&#xff0c;其重要性不言而喻。但隨著網站反爬策略的日益嚴格&#xff0c;爬蟲任務變得愈發困難&#xff0c;不過海外動態代理IP可以很好地解決這一問題。本文將詳細闡釋動態代理IP在爬蟲中的應用&#xff0c;以及如何使用動態代理IP提升爬…

深入理解ngx_http_proxy_connect_module模块(下)

目录 5. 源码分析5.1 模块的初始化代码5.2 请求入口点函数分析5.2.1 ngx_http_proxy_connect_post_read_handler5.2.2 ngx_http_proxy_connect_handler5.3 域名解析回调5.4 向上游服务器发起连接5.4.1 ngx_http_proxy_connect_process_connect5.4.2 ngx_http_proxy_connect_wri…