任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生。当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生。下面这篇文章主要给大家介绍了关于PHP中常见的错误与异常处理,需要的朋友可以参考下,
前言
当我们开发程序时,程序出现问题是很常见的,当出现了异常与错误我们该如何处理呢?本文将详细给大家介绍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中文网其他相关文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版
SublimeText3 Linux最新版

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具