不同的错误处理方法:

  • 简单的die()语句
  • 自己定义错误函数和错误触发器
  • 错误报告
主要的错误处理:使用die()函数

if(!file_exists("welcome.txt")){
  die("FIle not found");
}else{
  $file=fopen("welcome.txt","r");
}

或者
$file=fopen("webdictionary.txt","r") or die("Unable to open file!");

die(status):假设status是字符串,则该函数会在推出前输出字符串。

                 假设status是证书。这个值会被用作退出状态。

退出状态的值在0到254之间。退出状态255由php保留,不会被使用。状态0用于成功地终止程序。


创建自己定义错误处理器:
该函数必须有能力处理至少两个參数(error level和error message),可是能够接受最多五个參数(可选的:file,line-number以及error context)。
error_function(error_level,error_message,error_file,error_line,error_context)//错误报告级别,错误消息,发送错误的文件名称,行号。规定一个数组(包括了当发生错误时在用的每一个变量以及它们的值)

常量 描写叙述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本运行。
8 E_NOTICE

Run-time 通知。

脚本发现可能有发生错误,但也可能在脚本正常执行时发生。

256 E_USER_ERROR 致命的用户生成的错误。这类似于程序猿使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序猿使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序猿使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR。但可被用户定义的处理程序捕获。

(參见 set_error_handler())

8191 E_ALL
全部错误和警告,除级别 E_STRICT 以外。
(在 PHP 6.0。E_STRICT 是 E_ALL 的一部分)





function customError($errno,$errstr){
echo "<b>Error:</b>[$errno] $errstr <br/>";
echo "Ending Script";
die();
}

当上述错误被触发时,它会取得错误级别和错误消息。然后它会输出错误级别和消息。并终止脚本。如今。已经创建了一个错误处理函数,我们须要确定在何时触发该函数。

Set Error Handler:
php的默认错误处理程序是内奸的错误处理程序。能够改动错误处理程序。使其仅应用到某些错误,这样脚本就能够不同的方式来处理不同的错误。

本例中,我们打算针对全部错误来使用我们的自己定义错误处理程序。


set_error_handle(“customError”);
当处理全部错误时。set_error_handler()仅须要一个參数。能够加入第二个參数来规定错误级别。


触发错误:
当用户的输入无效时触发错误。由trigger_error()完毕。
$test=2;
if($test>1){
trigger_error("Value must be 1 or below");//大于1时触发错误
}

可能的错误类型:
E_USER_ERROR:
E_USER_WARNING:
E_USER_NOTICE:




























php学习笔记--error的更多相关文章

  1. MySQL学习笔记——ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Enter password: E ...

  2. C语言学习笔记--#error 、 #line 和 #pragma 的使用

    1. #error 的用法 (1)#error 是一种预编译器指示字,用于生成一个编译错误消息 (2)用法:#error message //注意:message 不需要用双引号包围 (3)#erro ...

  3. R语言学习笔记-Error in ts(x):对象不是矩阵问题解决

    1.问题 在对时间序列进行拟合操作时,发生:Error in ts(x):对象不是矩阵的错误,而直接在arima()函数中使用时没有问题的. > sample<-c2 > sampl ...

  4. jQuery源代码学习笔记_工具函数_noop/error/now/trim

    jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...

  5. SQLServer学习笔记系列1

    一.前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习Sqlserver写起,自己本身对数 ...

  6. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  7. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  8. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  9. html5学习笔记一

    HTML5学习笔记 <video>标记:定义视频,Ogg.MPEG4.WebM三种格式 <video src=”movie.ogg”  controls=”controls”> ...

随机推荐

  1. 回文(manacher)

    裸manacher 我竟然写跪了………… 一个地方(偶数)没写清楚…… 我OOXOXOXOXXOXO #include<cstdio> #include<cstdlib> #i ...

  2. FFT算法的物理意义

    FFT是离散傅立叶变换的高速算法,能够将一个信号变换到频域.有些信号在时域上是非常难看出什么特征的,可是如果变换到频域之后,就非常easy看出特征了.这就是非常多信号分析採用FFT变换的原因.另外,F ...

  3. Swift - 移除页面视图上的所有元素

    下面代码可以遍历移除页面视图上的所有元件 1 2 3 4 5 6 //清空所有子视图 func clearViews() {     for v in self.view.subviews as [U ...

  4. common lisp wiki

    CLiki: index   http://www.cliki.net/

  5. Google 搜索的基本语法

    ★搜索引擎的选择 先简单说一下"搜索引擎的选择". 在咱们天朝,Google 屡屡被 GFW 骚扰,导致百度占了便宜,成为份额最高的搜索引擎.不过今天这篇教程,俺还是继续拿 Goo ...

  6. Delphi 类与对象内存结构浅析(三篇)

    http://blog.csdn.net/starsky2006/article/details/5497082 http://blog.csdn.net/starsky2006/article/de ...

  7. 智能手机的工业控制应用方案——SimpleWiFi在工业控制领域应用

    智能手机的工业控制应用方案——SimpleWiFi在工业控制领域应用    先上图: 现在的智能控制都是基于微控制器,随着智能的手持终端的普及,基于智能终端的控制就会越来越普遍. WIFI便是其中的一 ...

  8. 从零开始,使用python快速开发web站点(2)

    书接上文.http://blog.csdn.net/i7788/article/details/10306595 首先是数据库的搭建,这里的django的数据模型搭建十分easy. no sql.ju ...

  9. HDU 1231:最大连续子序列(DP)

    pid=1231">最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  10. C++不支持Unicode,即使utf8

    今天,字符串unicode我们已经不需要常理的理由,但是,一些有编程语言的悠久历史.这仍然是一个头疼. 尽管第三方库支持的假设,C++事实上没有真正有效地支持unicode.即使utf8.(注意:本文 ...