Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 562|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-9-2 12:57:15 | 显示全部楼层 |阅读模式

    【常见的错误类型】

    ① 语法错误

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

     

    ② 环境错误

     

    ③ 逻辑错误

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 13:43 , Processed in 0.059171 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表