PHP中的错误信息
在PHP4中,没有异常 Exception这个概念,只有 错误Error。我们可以通过修改php.ini 文件来配置用户端输出的错误信息。
在php.ini 中,一个分号 ; 表示注释。
Php.ini 将能够显示的错误类型分为如下种类。
; E_ALL -所有的错误和警告,(不包含E_STRICT).
; E_ERROR -致命的运行时错误
; E_RECOVERABLE_ERROR -可由异常处理机制所捕捉 (catch/handle) 的错误
; E_WARNING - 运行时的警告(非致命错误)
; E_PARSE -编译时解析错误
; E_NOTICE - 运行时的提示,这些提示常常是代码中的bug引起的,也许是故意的(如使用一个未初始化的变量,事实上它被自动初始化成一个空字符串) 。
; E_STRICT - 运行时提示,能够给于PHP建议,以改变你的代码,以获得最好的协同性,并完善代码的兼容性。
; E_CORE_ERROR - PHP 初始化启动过程中的致命错误。
; E_CORE_WARNING - PHP 初始化启动过程中的非致命错误。
; E_COMPILE_ERROR - 致命的编译错误。
; E_COMPILE_WARNING – 编译错误(非致命的错误)。
; E_USER_ERROR - 用户错误信息。
; E_USER_WARNING - 用户警告信息。
; E_USER_NOTICE -用户提示信息。
在php.ini 中error_reporting 控制输出到用户端的消息种类。
以下几种是php.ini 中推荐的几种配置。
error_reporting = E_ALL 表示输出所有的信息。
error_reporting = E_ALL & ~E_NOTICE 表示输出所有的错误,除了提示。
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 表示输出所有的 ERROR 信息。
在php.ini 中,display_errors可以设置是否将以上设置的错误信息输出到用户端。
display_errors = On 输出到用户端(调试代码时候,打开这项更方便)
display_errors = OFF 消息将不会输出到用户端(最终发布给用户时记得改成off)
php中错误消息处理
在php中,对于错误处理非常的宽松。php系统会尽量让程序运行下去,除非遇到致命错误。
例5-2-1.php
代码片段
例:5-2-1.php
< br/><br/><br/>
< ?php
echo "start......<br/>" ;
echo $t; echo "run......<br/>" ;
echo $b = 100/0; echo "run......<br/>" ;
$a = new A(); echo "end........<br/>";
?>
执行结果
例:5-2-1.php
start......
run...... Warning: Division by zero in 5-2-1.php on line 6
run...... Fatal error: Class 'A' not found in 5-2-1.php on line 8
第5行,直接打印一个未赋值变量$t时候,系统报出一个 Notice,未定义变量。
第7行,做除以0的运算时,系统报出一个Warning,提示有除以0这样的警告,程序依然在运行。
第9行,当实例化一个不存在的类的时候,发生致命错误,程序终止运行。
再次提示:如果不想显示错误信息给用户看到,设置php.ini中
display_errors = OFF
php代码中调整错误级别
除了在php.ini文件中可以调整错误消息的显示级别外,在php代码中也可以自定义消息显示的级别。
PHP提供了一个方便的调整函数。
int error_reporting ( [int level] )
使用这个函数可以定义当前php页面中错误消息的显示级别。参数level使用了二进制掩码组合的方式。
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
例5-2-2.php
代码片段
例:5-2-2.php<br/><br/><br/>
< ?php
error_reporting(0);
//关闭所有错误显示
//error_reporting(E_ERROR | E_WARNING | E_PARSE);
//error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
//error_reporting(E_ALL ^ E_NOTICE); //php.ini错误值。
//error_reporting(E_ALL); //显示所有错误信息。
//ini_set('error_reporting', E_ALL);
//error_reporting(E_ALL)同样效果的代码。
echo "start......<br/>" ;
echo $t; echo "run......<br/>" ;
echo $b = 100/0; echo "run......<br/>" ;
$a = new A();
echo "end........<br/>"; ?>
执行结果
例:5-2-2.php
start......
run......
run......
自定义错误处理
在php中,可以自定义对错误处理的方式。首先要自定义一个错误处理函数,然后使用 set_error_handler()函数向系统声明错误处理函数。代码中产生的错误就会使用这个错误处理函数了。
使用trigger_error()函数,可以触发一个error。例如trigger_error("age you input must >= 0", E_USER_ERROR),触发自己的错误信息。
例:5-2-3.php
代码片段
例:5-2-3.php
< br/><br/><br/>
< ?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error in line $errline of file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default: echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}
}
set_error_handler("myErrorHandler"); //定义错误处理函数. $age = -100;
//假设出现了负数的年龄,这明显是错误的。
if ($age < 0) {
trigger_error("age you input must >= 0", E_USER_ERROR);
//触发错误; }
?>
执行结果
例:5-2-3.php
My ERROR [256] age you input must >= 0 Fatal error in line 27 of file D5-2-3.php, PHP 5.1.1 (WINNT) Aborting...
PHP中的错误信息的更多相关文章
- 未指定的错误,发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。数据类型不被支持。
未指定的错误,发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息.数据类型不被支持. 博客分类: 雅芳生涯 .Net VB C# OracleMicrosoftSecurity ...
- 在ASP.NET 5中显示错误信息
在 ASP.NET 5 中如果不进行显示错误信息的相关配置,在发生错误时,在浏览器中只能看到空白页面. 显示错误信息的配置方法如下: 1)在 project.json 中添加对 Microsoft.A ...
- [转]Jquery中AJAX错误信息调试参考
下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求 ...
- SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码
问题: 后台在springMVC中使用hibernate-validator做参数校验的时候(validator具体使用方法见GOOGLE),用properties文件配置了校验失败的错误信息.发现回 ...
- PHP编译过程中常见错误信息的解决方法
在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: checking for BZip2 support… yes ch ...
- Abp中打开错误信息输出
Abp默认是不向客户端输出错误日志的,导致有些内部报错既不能中断,也没有信息输出.此时打开日志输出开关即可.在xxModule类中PreInitialize()方法里 Configuration.Mo ...
- 在block函数中规避错误信息 "capturing self strongly in this block is likely to lead to a retain cycle”
以形如 _fontValueChangedBlock = ^(){ [self.fontSmallButton addTarget:self action:@selector(btnFontSmall ...
- CentOS编译PHP过程中常见错误信息的解决方法
原文链接:http://www.linuxidc.com/Linux/2014-05/102327.htm ********************************************** ...
- 遍历ModelState中存储的错误信息
在服务器端验证中,有时我们添加了一个ModelError,然后还需要将该信息以JS的形式返回到客户端.如: [HttpPost] public ActionResult Index(LogOnMode ...
随机推荐
- android硬件返回
1.第一种 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { //点击回退键 if(Ke ...
- js 空正则匹配任意一个位置
看一个正则 这里明显,起到匹配作用的是 | 后的,可 | 后什么都没有,原理不知道,也没有搜到文献,只有在 Reg101 上是这样解释的, 所以得出结论: js 中,空正则匹配任意一个位置. 不过,这 ...
- java前后台开发之后台自动上传下载
package downloadTest; import java.io.BufferedReader; import java.io.File; import java.io.FileInputSt ...
- Bootstrap初学基础总结
Bootstrap 1>.Web UI 框架 可以帮助菜鸟程序员 ,迅速简便的搭建起专业级界面效果 2>如何快速掌握利用框架 1.框架的整合和搭建,让框架能够正常跑起来 2.通过复制粘贴文 ...
- Python--进阶处理9
# =========================第九章:元编程============================= # ----------------在函数上添加包装器--------- ...
- Python--进阶处理7
# ====================第七章:函数========================= # 为了能让一个函数接受任意数量的位置参数,可以使用一个* 参数# 为了接受任意数量的关键字 ...
- xcode6 下载
百度云下载 http://pan.baidu.com/s/1qWpuIC0提取码:ip9o 苹果下载: http://adcdownload.apple.com//wwdc_2014/xcode_6_ ...
- odex反编译dex异常 Cannot locate boot class path file /system/framework/core.odex
为了将ROM中system/app下的CertInstaller.odex反编译为CertInstaller.dex,输入命令: "java -jar baksmali.jar -x C ...
- Truncate有外键约束的表
SET FOREIGN_KEY_CHECKS=0; TRUNCATE TABLE table_name; SET FOREIGN_KEY_CHECKS=1;
- 关于VFS文件系统中的superblock、inode、d_entry和file数据结构