前言

当我们开发程序时,程序出现问题是很常见的,当出现了异常与错误我们该如何处理呢?本文将详细给大家介绍PHP错误与异常处理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:
一、PHP错误处理
1.语法错误
2.运行时错误
3.逻辑错误:不提示错误,但功能不对,最麻烦
4.三种级别:notice/warning/fatal error(无法继续执行)
5.错误报告显示:
a.可以在php.ini中修改error_reporting项目,以限定错误报告类型,如:error_reporting=E_ALL & ~E_NOTICE
b.只修改某个脚本内的错误显示,可以使用error_reporting(E_ALL & ~E_NOTICE); (推荐)
6.自定义错误报告:set_error_handler()可以传入用以显示错误的预定参数,如下:
set_error_handler('reportError');
$mess="";
function reportError($error_type,$error_message,$error_file,$error_line){
global $mess;
$mess.="发生错误级别为{$error_type}类型,错位信息<b>{$error_message}</b>,在文件{$error_file}中,第{$error_line}行。<br>";
}
getType($a);
echo "1111111<br>";
getType();
echo "2222<br>";
echo $mess;
/*发生错误级别为8类型,错位信息Undefined variable: a,在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php中,第24行。
发生错误级别为2类型,错位信息gettype() expects exactly 1 parameter, 0 given,在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php中,第26行。*/
7.记录错误日志
a.将PHP.ini中display_errors设置为Off,log_errors设置为On
b.自定义日志目录error_log="C:/XX/XX/php_error.log"
c.也可以使用ini_set("display_errors","Off")或ini_get在脚本内部进行设定
二、PHP异常处理
1.try catch一体的,中间不能有任何代码
2.Exception是系统预定义的类
3.如果有异常对象抛出,就将异常对象给catch中的类
4.try中发生异常位置后的代码不再继续执行,而是直接转到catch中执行
try{
echo "开车上班<br>";
throw new Exception("车子爆胎了!");
}catch(Exception $e){//相当于Exception $e = new Exception('');
echo $e->getMessage().'<br>';
echo '换上备胎,继续上班<br>';
}
5.异常处理可以配合错误处理一起使用
set_error_handler('reportError');
function reportError($error_type,$error_message,$error_file,$error_line){
if($error_type==E_WARNING){
throw new Exception("错误信息:{$error_message},错误文件:{$error_file},错误行数{$error_line}");
}
}
function drive($a){
echo $a;
}
try{
echo "开车上班<br>";
drive();//忘记传参,触发自定义错误函数中警告性错误,抛出异常
}catch(Exception $e){//相当于Exception $e = new Exception('');
echo $e->getMessage().'<br>';
echo "换上备胎,继续上班<br>";
}
6.自定义异常类
a.Exception类是所有异常的基类,没有定义具体异常的处理方法(只有些获取提示的方法)
b.自定义的异常类必须是系统类的子类
c.如果继续了Exception类,重写了构造方法,不要忘记调用父类构造方法进行初始化
class BTException extends Exception {
function __construct($message){
parent::__construct($message);
}
function method(){
return "打开后备箱,拿出工具,换备胎";
}
}
try{
echo "开车上班<br>";
throw new BTException("车子爆胎了!");
}catch(BTException $e){//相当于Exception $e = new Exception('');
echo $e->getMessage().'<br>';
echo $e->method().'<br>';
echo "换上备胎,继续上班<br>";
}
7.捕获多个异常,注:try中还可嵌套try
class Err1 extends Exception {
function __construct($message){
parent::__construct($message);
}
function method(){
return "纠正错误1";
}
}
class Err2 extends Exception {
function __construct($message){
parent::__construct($message);
}
function method(){
return "纠正错误2";
}
}
class Err3 extends Exception {
function __construct($message){
parent::__construct($message);
}
function method(){
return "纠正错误3";
}
}
$rand=rand(1,3);
try{
switch($rand){
case 1:
throw new Err1("发生错误1");
case 2:
throw new Err2("发生错误2");
case 3:
throw new Err3("发生错误3");
}
}catch(Err1 $e){
echo $e->getMessage().'<br>';
echo $e->method().'<br>';
}catch(Err2 $e){
echo $e->getMessage().'<br>';
echo $e->method().'<br>';
}catch(Err3 $e){
echo $e->getMessage().'<br>';
echo $e->method().'<br>';
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# php错误和异常处理
# php
# 异常处理
# 异常处理机制
# 解决thinkphp5未定义变量会抛出异常
# 页面错误
# 请稍后再试的问题
# php异常处理捕获错误整理
# 基于PHP7错误处理与异常处理方法(详解)
# laravel 5异常错误:FatalErrorException in Handler.php l
# php中的异常和错误浅析
# 浅谈PHP中的错误处理和异常处理
# PHP错误和异常处理功能模块示例
# PHP中错误与异常的日志记录用法分析
# PHP中的错误及其处理机制
# 备胎
# 自定义
# 发生错误
# 可以使用
# 设置为
# 错误报告
# 抛出
# 相关内容
# 多个
# 子类
# 说了
# 不多
# 转到
# 给大家
# 三种
# 问题是
# 写了
# 该如何
# 当我们
# 还可
相关文章:
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
常州企业建站如何选择最佳模板?
如何在Ubuntu系统下快速搭建WordPress个人网站?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
C#怎么使用委托和事件 C# delegate与event编程方法
家庭服务器如何搭建个人网站?
平台云上自主建站:模板化设计与智能工具打造高效网站
如何破解联通资金短缺导致的基站建设难题?
魔方云NAT建站如何实现端口转发?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在IIS中新建站点并解决端口绑定冲突?
如何快速搭建响应式可视化网站?
已有域名如何快速搭建专属网站?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何通过主机屋免费建站教程十分钟搭建网站?
javascript中的try catch异常捕获机制用法分析
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何选择网络建站服务器?高效建站必看指南
常州自助建站费用包含哪些项目?
宁波免费建站如何选择可靠模板与平台?
智能起名网站制作软件有哪些,制作logo的软件?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
制作农业网站的软件,比较好的农业网站推荐一下?
营销式网站制作方案,销售哪个网站招聘效果最好?
建站主机如何选?高性价比方案全解析
如何在云虚拟主机上快速搭建个人网站?
建站之星后台管理如何实现高效配置?
免费视频制作网站,更新又快又好的免费电影网站?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
实现虚拟支付需哪些建站技术支撑?
如何在橙子建站上传落地页?操作指南详解
建站为何优先选择香港服务器?
,如何利用word制作宣传手册?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
上海网站制作开发公司,上海买房比较好的网站有哪些?
定制建站方案优化指南:企业官网开发与建站费用解析
如何通过VPS搭建网站快速盈利?
广州美橙建站如何快速搭建多端合一网站?
建站之星logo尺寸如何设置最合适?
建站之星如何快速解决建站难题?
建站之星展会模版如何一键下载生成?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
定制建站策划方案_专业建站与网站建设方案一站式指南
为什么Go需要go mod文件_Go go mod文件作用说明
建站之星代理商如何保障技术支持与售后服务?
如何快速生成高效建站系统源代码?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
郑州企业网站制作公司,郑州招聘网站有哪些?
详解jQuery停止动画——stop()方法的使用
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。