PHP 错误与异常 笔记与总结(1)错误(Deprecated,Notice,Warning)
【常见的错误类型】
① 语法错误
【例1】程序语句结尾少了';'
<?php
$username = "dee" //少了分号;
echo $username;
输出:
( ! ) Parse error: syntax error, unexpected T_ECHO in D:\practise\php\Error\error1.php on line 3
Parse error:解析错误
syntax error:语法错误
【PHP 中的错误级别】16 种
| E_ERROR | 致命的运行时错误。终止程序执行。 |
| E_WARNING | (运行时警告)非致命的 run-time 错误。不暂停脚本执行。 |
| E_PARSE |
语法解析错误 |
| E_NOTICE | 通知(注意),表示可能表现为错误的情况 |
| E_CORE_ERROR | 在 PHP 初始化启动过程中发生的致命错误 |
| E_CORE_WARNING | PHP 初始化启动过程中发生的警告 |
| E_COMPILE_ERROR | 致命编译错误 |
| E_COMPILE_WARNING |
编译时警告 |
| E_USER_ERROR |
用户产生的错误信息,类似E_ERROR,但是是由于用户自己在代码中使用trigger_error()函数产生的 |
| E_USER_WARNING |
用户产生的警告信息,类似E_WARNING,但是是由用户自己在代码中使用trigger_error()函数产生的 |
| E_USER_NOTICE |
用户产生的通知信息,类似E_NOTICE,但是是由用户自己在代码中使用trigger_error()函数产生的 |
| E_STRICT |
启动PHP对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性 |
| E_DEPRECATED |
运行时通知,启动后将会对在未来版本中可能无法正常工作的代码给出警告 |
| E_USER_DEPRECATED |
用户产生的警告信息,类似E_DEPRECATED,但是是通过trigger_error()函数产生的 |
| E_ALL |
所有的错误和警告信息 |
| E_RECOVERABLE_ERROR |
可被捕获的指明错误它表示可能发生了一个可能非常危险的错误,但是还没有导致PHP 引擎处于不稳定的状态。如果该错误没有被用户自定义句柄捕获(见set_error_handler()),将成为一个E_ERROR,从而脚本会终止运行。 |
a. Deprecated 最低级别的错误 —— 不推荐 或 不建议
【例2】
<?php
if(ereg('dee', 'welcome to dee\'s medows', $matches)){
print_r($matches);
}else{
echo 'not found';
}
输出:
( ! ) Deprecated: Function ereg() is deprecated in D:\practise\php\Error\error1.php on line 2
Array ( [0] => dee )
deprecated:不推荐的,过时的(可以使用 preg_match 代替 ereg 方法),但同时程序也输出了结果。
【例3】(PHP 5.3 以上版本)
<?php
echo mysql_escape_string('\' or 1 = 1 #');
输出:
Deprecated:mysql_escape_string():This Function id deprecated: use mysql_real_escape_string() instead. in ****
\' or 1 = 1 #
b. Notice 通知级别的错误 —— 语法中存在一些不当的地方。PHP 是弱类型语言,变量可以不声明直接使用,当直接使用某个变量的时候,就会发送一个 notice 级别的错误告诉你这个变量没有声明:undefined variable;再如数组索引,如果下标是字符串类型时,在使用数组索引(下标)时没有加引号,php 则会将其当成常量解析,如果没有找到这个常量,才将其当成下标去解析。
【例4】
<?php
echo $dee;
//程序继续执行
echo 'continue';
输出:
( ! ) Notice: Undefined variable: dee in D:\practise\php\Error\error1.php on line 2
continue
【例5】
<?php
$userInfo = array('username'=>'dee', 'age'=>28);
echo $userInfo['username'];
echo '<hr>';
echo $userInfo[age]; //会产生 notice 级别的错误
echo '<hr>'; echo 'continue';
输出:
dee
( ! ) Notice: Use of undefined constant age - assumed 'age' in D:\practise\php\Error\error1.php on line 5
28
continue
Use of undefined constant age :未定义的常量 age
所以这种写法是不规范的。
c. Warning 警告级别的错误—— 语法中不恰当的地方;或者函数希望得到两个参数,但是调用函数时只传递了一个参数;或者参数的类型,参数的值不正确
【例6】
<?php
settype($var, 'int'); // 变量 var 的类型设置为 int
var_dump($var); //设置一个不存在的类型,warning
settype($var, 'dee');
var_dump($var); echo 'continue';
输出:
int 0
( ! ) Warning: settype() [function.settype]: Invalid type in D:\practise\php\Error\error1.php on line 6
int 0
continue
Invalid type:非法的类型
(未完:Fatal 等)
② 环境错误
③ 逻辑错误
PHP 错误与异常 笔记与总结(1)错误(Deprecated,Notice,Warning)的更多相关文章
- PHP 错误与异常 笔记与总结(10)错误处理器测试
关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...
- PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()
通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处 ...
- PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中
[将错误记录到系统日志中] 在 php.ini 中将 error_log 设置为: error_log = syslog 或者在运行时使用 ini_set() 函数设置. [例1] <?php ...
- PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中
[记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 其 ...
- PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别
[PHP 配置文件中与错误相关的选项 ] 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 设置是否将错误信息记录到日志 ...
- PHP 错误与异常 笔记与总结(2)错误(Fatal)
(接上) d.Fatal error 致命级别的错误 —— 程序终止执行 [例7]调用一个未定义的方法 <?php echo md6('dee'); echo 'continue'; 输出: ( ...
- PHP 错误与异常 笔记与总结(12 )异常
① 异常的概念:异常和错误的区别 PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制.PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念. ② 异常的语法结构 [例1] &l ...
- PHP 错误与异常 笔记与总结(18 )页面重定向实现
在发生错误时,将用户重定向到另一个页面. <?php header('content-type:text/html; charset=utf-8'); class ExceptionRedire ...
- PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误
有两种方式可以在 PHP 中以异常的方式处理错误: ① PHP 内置的 ErrorException类(也是 Exception 类的子类) <?php function exception_e ...
- PHP 错误与异常 笔记与总结(14 )记录和发送异常信息
当发生异常时,把异常信息记录到日志文件中: <?php header('content-type:text/html; charset=utf-8'); class LogException e ...
随机推荐
- HttpHandler简介
新建的一般处理程序后缀为.ashx,一般会另外新建一个后缀为.ashx.cs的文件,其实所有的代码都写在.ashx.cs里面,只是微软帮我们做了一个傻瓜化的转换新建的一般处理程序,如:Text1,它就 ...
- 《Effective Java》笔记 使类和成员的可访问性最小化
类和接口 第13条 使类和成员的可访问性最小化 1.设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况: ...
- svn服务端hooks钩子可用于多项目自动同步
废话不多说,直接上post-commit脚本了: 日志会全部记录下来包括同步的文件 vim post-commit #!/bin/sh REPOS="$1" # 仓库的路径 REV ...
- javascript实现的图数据结构的广度优先 搜索(Breadth-First Search,BFS)和深度优先搜索(Depth-First Search,DFS)
最后一例,搞得快.三天之内走了一次.. 下一步,面象对像的javascript编程. function Dictionary(){ var items = {}; this.has = functio ...
- Codeforces Gym 100187K K. Perpetuum Mobile 构造
K. Perpetuum Mobile Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/pro ...
- 【Tyvj1038】忠诚 线段树
题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...
- eclipse下导入工程的小问题
- 【web JSP basePath】basePath的含义
问题1:WEB-INF的问题 今天新创建项目,在JSP中引入外部的JS文件和CSS文件,但是路径一直显示错误: 其中JSP页面引入这几个文件是这么写的: <link rel="styl ...
- DP VK Cup 2012 Qualification Round D. Palindrome pairs
题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 /* 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 ...
- COGS731 [网络流24题] 最长递增子序列(最大流)
给定正整数序列x1,..., xn (n<=500).(1)计算其最长递增子序列的长度s.(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列.(3)如果允许在取出的序列中多次使用x1和 ...