PHP---错误处理(error)

错误的级别

1. notice:提示2. warning:警告3. error:致命错误
  • 1
  • 2
  • 3
  • 4
  • 5

注:notice和warning报错后继续执行,error报错后停止

错误的提示方法

方法一:显示在浏览器上

方法二:记录在日志中执行

错误处理有关的配置(在php.ini中)

1. error_reporting = E_ALL:报告所有的错误
2. display_errors = On:将错误显示在浏览器上
3. log_errors = On:将错误记录在日志中
4. error_log=’地址’:错误日志保存的地址
  • 1
  • 2
  • 3
  • 4

项目开发的两个模式:

开发模式:错误显示在浏览器上,不要记录在日志中
运行模式:错误不显示在浏览器上,记录是日志中
 

例题:

<?php
$debug=false;		//true:开发模式  false:运行模式
ini_set('error_reporting',E_ALL);	//所有的错误有报告
if($debug){ini_set('display_errors','on');	//错误显示是浏览器上ini_set('log_errors','off');	//错误不显示在日志中
}else{ini_set('display_errors','off');ini_set('log_errors','on');ini_set('error_log','./err.log');	//错误日志保存的地址
}//测试
echo $num;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

自定义错误处理

通过trigger_error产生一个用户级别的 error/warning/notice 信息
注意:用户级别的错误的常量名中一定要带有USER

<?php
$age=100;
if($age>80){//trigger_error('年龄不能超过80岁');  //默认触发了notice级别的错误//trigger_error('年龄不能超过80岁',E_USER_NOTICE);	//触发notice级别的错误//trigger_error('年龄不能超过80岁',E_USER_WARNING);trigger_error('年龄不能超过80岁',E_USER_ERROR);   //错误用户error错误
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注册错误处理函数,只要有错误就会自动调用错误处理函数:

定义错误处理函数:

function error() {echo '这是自定义错误处理';
}
set_error_handler('error');	//注册错误处理函数,只要有错误就会自动的调用错误处理函数
echo $num;
  • 1
  • 2
  • 3
  • 4
  • 5

自定义错误处理函数

/**
*自定义错误处理函数
*@param $errno int 错误类别
*@param $errstr string 错误信息
*@param $errfile string 文件地址
*@param $errline int 错误行号
*/
function error($errno,$errstr,$errfile,$errline) {switch($errno){case E_NOTICE:case E_USER_NOTICE:echo '记录在日志中,上班后在处理<br>';break;case E_WARNING:case E_USER_WARNING:	echo '给管理员发邮件<br>';break;case E_ERROR:case E_USER_ERROR:echo '给管理员打电话<br>';break;}echo "错误信息:{$errstr}<br>";echo "错误文件:{$errfile}<br>";echo "错误行号:{$errline}<br>";
}
set_error_handler('error');
echo $num;//运行结果
记录在日志中,上班后在处理
错误信息:Undefined variable: num
错误文件:F:\wamp\www\4-demo.php
错误行号:50

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

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

相关文章

对url给后台传数据的时候特殊字符需要转义

URL中的字符只能是ASCII字符&#xff0c;但是ASCII字符比较少&#xff0c;而URL则常常包含ASCII字符集以外的字符&#xff0c;如非英语字符&#xff0c;汉字&#xff0c;特殊符号等等&#xff0c;所以要对URL进行转换。这个过程就叫做URL编码&#xff0c;或者叫URL转义&#xf…

PHP Cookie处理

Cookie 是什么&#xff1f; cookie是保存在客户端的信息包&#xff08;一个文件&#xff09; cookie 常用于识别用户。 cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时&#xff0c;这台计算机将会发送 cookie。通过 PHP&#xff0c;您能…

python装饰器补充

带参装饰器 msg """ 1.QQ 2.wechat """ avg input(验证方式&#xff1a;)def auth(avg):def wrapper(f):def inner(*args,**kwargs):if avg QQ:user input(name)pwd input(password)if user alex and pwd 123456:f()else:print(输入错误)…

PHP-连接数据库

1.2 连接数据库 通过PHP做MySQL的客户端 1.2.1 开启mysqli扩展 在php.ini中开启mysqli扩展 extensionphp_mysqli.dll开启扩展后重启服务器&#xff0c;就可以使用mysqli_函数了&#xff0c;1.2.2 连接数据库 创建news数据库 -- 创建表 drop table if exists news; create …

python模块初始与time、datetime及random

模块初始与time、datetime及random 模块初始 模块的概念&#xff08;本质为一个py文件&#xff09; python模块可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段&#xff0c;这些自我包含的有组织 的代码段就是模块&#xff0c;模块在物理形式上表…

PHP-面向对象编程教程

1.2 面向对象介绍 1.2.1 介绍 面向对象是一个编程思想。编程思想有面向过程和面向对象 面向过程&#xff1a;编程思路集中的是过程上 面向对象&#xff1a;编程思路集中在参与的对象 以去饭馆吃饭为例&#xff1a; ​ 面向过程&#xff1a;点菜——做菜——上菜——吃饭—…

vue-property-decorator使用指南

在Vue中使用TypeScript时&#xff0c;非常好用的一个库&#xff0c;使用装饰器来简化书写。 一、安装 npm i -S vue-property-decorator PropPropSyncProvideModelWatchInjectProvideEmitComponent (provided by vue-class-component)Mixins (the helper function named mix…

Java生鲜电商平台-统一异常处理及架构实战

Java生鲜电商平台-统一异常处理及架构实战 补充说明&#xff1a;本文讲得比较细&#xff0c;所以篇幅较长。 请认真读完&#xff0c;希望读完后能对统一异常处理有一个清晰的认识。 背景 软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&…

VScode新建自定义模板快捷方式

VS新建vue文件的自定义模板 在使用vscode开发的时候&#xff0c;新建vue文件是不可或缺的&#xff0c;但是VSCode并没有vue文件的初始化模板&#xff0c;这个需要自定义模板。 我们可以使用vscode的snippets在新建.vue 文件后轻松获得一套模板。 具体步骤 打开VSCode -> …

ESLint Unary operator ‘++‘ used.

ESLint Unary operator used. 安装了ESLint&#xff0c;用这个工具之后发现居然不会写代码了。好尴尬~ 感觉自己以前写的JS都是假的... 没有操作 increment(state) {state.count ; },for(let i 0; i < temp.length; i} {//... } 然后报了如下错误 Unary operator u…

sencha touch笔记(6)——路由控制(1)

做项目的时候在界面的跳转上遇到了挺大的问题&#xff0c;本来跳转不想通过路由来控制的&#xff0c;没办法&#xff0c;只能再去看一下路由的跳转方式了。 应用程序的界面发生改变后&#xff0c;可以通过路由让应用程序的界面返回到改变之前的状态&#xff0c;例如浏览器中页面…

Angular rxjs operators 笔记

toArray /*toArray把结果都塞到数组里去 */ const source = interval(1000); const example = source.pipe(take(10),toArray() );example.subscribe(val => console.log(val)); // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] toArray /*pairwise把相邻的两个流组成数组 */…

Angular rxjs Subject笔记

BehaviorSubject /*ehaviorSubject接受一个默认参数,相当于new Subject后自动next(aa)之后到行为和Subject一致 */ const behave = new BehaviorSubject(aa); behave.subscribe(res => {console.log(res)

面试39 MySQL读写分离

&#xff08;1&#xff09;如何实现mysql的读写分离&#xff1f; 其实很简单&#xff0c;就是基于主从复制架构&#xff0c;简单来说&#xff0c;就搞一个主库&#xff0c;挂多个从库&#xff0c;然后我们就单单只是写主库&#xff0c;然后主库会自动把数据给同步到从库上去。 …

Angular自学笔记(一)ngModule 元数据

工作硬上开发angular项目,好难啊,上网搜资料教程真的贼少,吐槽真的没什么人用angular,自己学习到处搜集整理的笔记,分享出来,方便查看理解总结。应该适用于angular11系列(更新真快,反正我也不知道之前低版本不同 手动狗头) 什么是angular module(ngModule)? angula…

cookbook_数据结构和算法

1.1将数据分解为单独的变量list_a [1,2,3,4,5,6,7,8,9] a,b,c,d,e,f,g,h,i list_a print(a,b,c,d,e,f,g,h,i) #使用相等数量的参数来接收_,b,c,d,e,f,g,h,_ list_a print(b,c,d,e,f,g,h) #不要的数据使用一个没有用的变量接收 View Code1.2从任意长度的可迭代对象中分解元素…

Angular自学笔记(二)显示数据 绑定属性

显示数据 1.显示数据 ng的模版中,默认用双大括号{{}}绑定组件中的变量显示出来 import {Component } from @angular/core; @Component({selector: app-root,template: `<h1>{{title}}</h1><h2>My favorite hero is: {{myHero}}</h2>`

机器学习概览

什么是机器学习&#xff1f; 广义概念&#xff1a; 机器学习是让计算机具有学习的能力&#xff0c;无需明确的编程 —— 亚瑟萨缪尔&#xff0c;1959 工程概念&#xff1a; 计算机程序利用经验 E 学习任务 T&#xff0c;性能是 P&#xff0c;如果针对任务 T 的性能 P 随着经验 …

Angular自学笔记(?)TemplateRef和ViewContainerRef

ElementRef 由于ng是跨平台的为了减少视图层和渲染层的耦合也为了让ng更适应多平台,ng帮我们封装了ElementRef,我们可以通过ElementRef拿到native元素(在浏览器中也就是我们常说的DOM元素) 下面我们看一段代码 import {Component, ElementRef, AfterViewInit } from @angu…

python之re模块

re模块 re&#xff08;正则&#xff09;简介 ​ 正则就是用一些具有特殊含义的符号组合到一起&#xff08;称为正则表达式&#xff09;来描述字符或者字符串的方法。或者说&#xff1a;正则就是用来描述一类事物的规则。 re元字符 元字符匹配内容\w匹配字母&#xff08;包含中文…