• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP错误与异常笔记与总结(1)错误(Deprecated,Notice,Warning) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

【常见的错误类型】

【例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 等)

 

② 环境错误

 

③ 逻辑错误

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP ini_set发布时间:2022-07-10
下一篇:
php----爬虫(爬取豆瓣演员信息,搜索页)遇到的问题发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap