php 错误 异常,PHP错误异常处理
错误处理是捕获程序引发的错误,然后采取适当的措施的过程。 如果能正确处理错误,那么可以处理许多不可预见的后果。
在PHP中处理一个错误是非常简单的。
使用die()函数
在编写PHP程序时,应该在继续之前检查所有可能的错误情况,并在需要时采取适当的措施。
尝试下面的例子,处理如果没有test.xt文件提示错误信息并终止程序。
if(!file_exists("test.txt")) {
die("File not found");
}else {
$file = fopen("test.txt","r");
print "Opend file sucessfully";
}
// Test of the code here.
?>
这样就可以编写一个高效的代码。 使用上述技术,您可以在出错时停止程序,并显示更有意义且用户友好的信息。
定义自定义错误处理函数
开发者可以编写自己的函数来处理错误。 PHP提供了一个定义错误处理函数的框架。
此函数必须能够处理至少两个参数(错误级别和错误消息),但最多可以接受五个参数(可选:文件,行号和错误上下文) -
语法
error_function(error_level,error_message,error_file,error_line,error_context);
它的参数说明如下 -
error_level - 必需项 - 指定用户定义的错误的错误报告级别。 必须是数值。
error_message - 必需项 - 指定用户定义错误的错误消息。
error_file - 可选项 - 指定发生错误的文件名。
error_line - 可选项 - 指定发生错误的行号。
error_context - 可选项 - 指定包含发生错误时使用的每个变量及其值的数组。
可能的错误级别
这些错误报告级别是用户定义的错误处理程序可用于的不同类型的错误。 这些值用cab组合使用|操作符。
编号
变量
描述
代码值
1
E_ERROR
致命的运行时错误。 脚本的执行被暂停。
1
2
E_WARNING
非致命的运行时错误。 脚本的执行不会停止。
2
3
E_PARSE
编译时解析错误。 解析错误只能由解析器生成。
4
4
E_NOTICE
运行时通知。 该脚本找到了一些可能是错误的东西,但也可能在正常运行脚本时发生。
8
5
E_CORE_ERROR
PHP初次启动时发生的致命错误。
16
6
E_CORE_WARNING
非致命的运行时错误。 这发生在PHP的初始启动过程中。
32
7
E_USER_ERROR
致命的用户生成错误。 这就像程序员使用PHP函数trigger_error()设置的E_ERROR
256
8
E_USER_WARNING
非致命的用户生成的警告。 这就像程序员使用PHP函数trigger_error()设置的E_WARNING
512
9
E_USER_NOTICE
用户生成的通知。 这就像程序员使用PHP函数trigger_error()设置的E_NOTICE
1024
10
E_STRICT
运行时通知。 启用PHP建议更改您的代码,这将确保代码的最佳互操作性和向前兼容性。
2048
11
E_RECOVERABLE_ERROR
可捕捉的致命错误。 这就像E_ERROR,但可以被用户定义的句柄捕获(另请参阅set_error_handler())
4096
12
E_ALL
所有错误和警告,除了E_STRICT级别(从PHP 6.0起,E_STRICT成为E_ALL一部分)
8191
所有上述错误级别可以使用以下PHP内置库函数进行设置,其中level是上表中定义的任何值。
int error_reporting ( [int $level] )
以下是创建一个错误处理函数的方式 -
function handleError($errno, $errstr,$error_file,$error_line) {
echo "Error: [$errno] $errstr - $error_file:$error_line";
echo "
";
echo "Terminating PHP Script";
die();
}
?>
当定义了自定义错误处理程序,需要使用PHP内置函数库set_error_handler()来设置它。 现在通过调用一个不存在的函数来检查上面的例子。
error_reporting( E_ERROR );
function handleError($errno, $errstr,$error_file,$error_line) {
echo "出错啦: [$errno] $errstr - $error_file:$error_line";
echo "
";
echo "Terminating PHP Script";
die();
}
//set error handler
set_error_handler("handleError");
//trigger error
myFunction();
?>
异常处理
PHP5有一个类似于其他编程语言的异常模型。异常很重要,对错误处理提供了更好的控制。
这里解释一下与异常有关一些关键字。
try - 用异常的函数应该放在try块中。 如果异常不触发,代码将继续正常。 但是,如果异常触发,则抛出异常。
throw - 这表示如何触发一个异常。每个throw必须至少有一个catch。
catch - catch块检索一个异常并创建一个包含异常信息的对象。
当引发异常时,语句后面的代码将不会被执行,PHP将尝试查找第一个匹配的catch块。 如果一个异常没有被捕获,那么如果有PHP致命错误,则将会发送一个“Uncaught Exception”。
可以抛出异常,并在PHP中捕获。 代码可以被包围在一个try块中。
每次try都必须至少有一个相应的catch块。 可以使用多个catch块来捕捉不同类别的异常。
异常可以在catch块中抛出(或重新抛出)。
示例
以下是一段代码,将此代码复制并粘贴到文件中,并验证结果。
try {
$error = 'Always throw this error';
throw new Exception($error);
// Code following an exception is not executed.
echo 'Never executed';
}catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "
";
}
// Continue execution
echo 'Hello World';
?>
在上面的例子中,$e->getMessage()函数用于获取错误信息。以下是Exception类的函数。
getMessage() - 异常的消息。
getCode() - 异常的代码编号。
getFile() - 源文件名。
getLine() - 源文件行数。
getTrace() - backtrace()的一个数组。
getTraceAsString() - 格式化的跟踪字符串。
创建自定义异常处理程序
程序员可以定义自己的自定义异常处理程序。 使用以下函数来设置用户定义的异常处理函数。
string set_exception_handler ( callback $exception_handler )
这里的exception_handler是当一个未捕获的异常发生时被调用的函数的名字。 在调用set_exception_handler()之前,必须定义这个函数。
示例
function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(), "
";
}
set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');
echo "Not Executed
";
?>
在PHP错误处理函数中查看完整的错误处理函数集。
¥ 我要打赏
纠错/补充
收藏
下一篇:哥,这回真没有了
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
php 错误 异常,PHP错误异常处理相关推荐
- HTTP网络连接相关知识整理(三):网络错误异常
一.tcp连接错误 待补充 二.应用层(HTTP)错误异常 HTTP错误主要分成三类:用户设备问题.Web服务器问题和连接问题.当客户端向Web服务器发送一个HTTP请求时,服务器都会返回一个响应代码 ...
- 【错误异常大全】:无法加载 DLL“ArcGISVersion.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
文章目录 错误异常 解决方案 错误异常 无法加载 DLL"ArcGISVersion.dll": 找不到指定的模块. (异常来自 HRESULT:0x8007007E). 解决方案 ...
- PHP的异常处理异常捕获错误类
1.错误分类 Fatal Error:致命错误(脚本终止运行)E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本E_CORE_ERROR // PHP启动时初始化过程中的致命错误E_CO ...
- python 异常处理模块_扩展Python模块系列(五)----异常和错误处理
在上一节中,讨论了在用C语言扩展Python模块时,应该如何处理无处不在的引用计数问题.重点关注的是在实现一个C Python的函数时,对于一个PyObject对象,何时调用Py_INCREF和Py_ ...
- servlet 异常处理_Servlet异常和错误处理示例教程
servlet 异常处理 有时候我写了一篇有关Java异常处理的文章,但是当涉及到Web应用程序时,我们需要的不仅仅是Java中的异常处理. Servlet异常 如果您注意到,doGet()和doPo ...
- python中语法错误-Python语法错误与异常及异常处理方法
回顾 在Python进阶记录之基础篇(二十)中,我们介绍了Python面向对象中的类方法和静态方法,以及类中拥有特殊功能的魔法函数.需要重点掌握类方法和静态方法的概念和基本用法,理解魔法函数的作用冰女 ...
- 深入探讨Java中的异常与错误处理
Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将来程序崩溃就无从调试,很难找到异常所在的位置.本文将探讨一下Java中异常与错误的处理 ...
- python3语法错误-【Python3之异常处理】
一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: inva ...
- python中if错误-python中的异常处理
异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同 ...
最新文章
- 图书管理系统python源代码-Python实现图书管理系统
- android vectorDrawable使用笔记(一)
- 解决Maven报Plugin execution not covered by lifecycle configuration (转载)
- java singleton 多线程_Java创建线程安全的单例singleton
- 【ruoyi若依】启用HTTPS/SSL后,首页重定向出错
- 新手算法学习之路----二叉树(二叉树最大路径和)
- bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码
- 聊聊推荐系统中的偏差
- python采用面向对象编程模式吗_如何理解 Python 中的面向对象编程?
- 汇编指令:push、pop
- 面向连接服务与无连接服务
- Android7.1添加开机启动服务程序关于Selinux权限问题说明
- Spark SQL External Data Sources JDBC官方实现写测试
- Gradle下载手动安装
- stvd watch 实时变量查看
- 二代测序(Next generation sequencing)介绍
- 别人笑我太疯癫,我笑别人看不穿
- 向量场的散度和旋度_矢量场,标量场,散度,梯度,旋度的理解
- VRay Next for SketchUp 室外建筑日景表现教程
- 游戏贪吃蛇(c语言)