PHP 的错误和异常处理

  • PHP中开启错误提示
    • 在php.ini 中将display_errors 设置为on。
    • 也可以在PHP脚本中用ini_set()函数动态的设置php.ini中的某个指令。ini_set('display',1)
  • 错误提示会泄露服务器的相关信息,所以一般在开发测试阶段开启,在正式 上线使用关闭错误提示信息
  • 设置错误报告级别
    • 在php.ini中通过设置error_reporting的来调整错误报告级别 
      • error_reporting = E_ALL&~E_NOTICE//抛出任何非注意的错误,默认值
      • error_reporting = E_ERROR|E_PARSE|E_CODE_ERROR//只考虑致命的运行错误,解析错误和和核心错误
    • 也可以在php脚本中通过error_reporting()函数来设置错误报告级别
      • error_reporting(0)//关闭错误报告
      • error_reporting(E_ALL)//将会PHP报告发生的每个错误
      • error_reporting(E_ALL & ~ E_NOTICE)//抛出任何飞注意的错误
      • error_reporting(E_ALL &~(E_WARNING | E_NOTICE)) //不提示警告和提示
  • die(),exit()在退出前都可以输出提示信息,tigger_error()可以替代它们以一个警告的方式提示信息并退出
  • 用户自定义错误处理set_error_handler(ballback,error_level)
    • 第一个参数是发生错误后启用的回调函数
    • 第二参数是错误级别(一般不用)
    • 当使用set_error_hander()后,error_reporing()将会失效,所有的错误将会自动调用自定的回调函数
    • 致命错误fatal error不会调用用户自定义的错误处理函数,系统会自动中断并退出。
  • 写错误报告日志
    • 第一步:在php.ini文件中配置选选项
      • error_reporing = E_ALL         ;报告每个错误
      • display_errors = Off             ;不显示满足上条指令所定义规则的所有错误报告
      • log_errors = on                     ;决定日志文件的位置
      • log_errors_max_len = 1024  ;设置每个日志项的最大长度(0也是最大值)
      • error_log = /usr/local/error.log ;指定错误报告写入的日志文件位置
    • 第二步:bool error_log( ) 在调用php 中的函数(在完成上面配置的基础上,error_log路径将会被覆盖掉)
      • error_log("错误信息",val,"记录日志的位置")
        • 0:将错误消息写到系统日志中去
          • linux:/usr/local/error.log
          • windows:右击我的电脑-》选择管理选项-》系统工具菜单-》时间查看器-》再找到应用程序选项。
        • 1:发送到 指定的邮箱中去
          • error_log(“哎呦出错了”,1,‘421659183@qq.com’)
        • 2 :发送到本机的端口中
          • error("哎哟出错了",2,“localhost:300”);
        • 3 :发送的到指定的文件中.
          • error_log("哎呦出错了",3,“c:/logs/error.log”);
  • 将错误信息写到操作系统的日志文件中去
    • 第一步:在php.ini文件中配置选选项
      • error_reporing = E_ALL         ;报告每个错误
      • display_errors = Off             ;不显示满足上条指令所定义规则的所有错误报告
      • log_errors = on                     ;决定日志文件的位置
      • log_errors_max_len = 1024  ;设置每个日志项的最大长度(0也是最大值)
      • error_log = syslog                 ;指定错误报告写入到操作系统的日志里
    • 第二步:在php脚本中依次使用以下函数
      • define_syslog_variables()   //该函数已被弃用,本人暂时没有找到替换的方法
      • openloga()
      • syslog()
      • closelog()
        • 实例:error_log.php
  • ==================================
  • php 异常处理需要手动抛出,java 中的 异常处理是自动抛出的
  • 从抛出异常处进入异常处理代码块,抛出异常位置到catch 中间的代码则不会执行,catch代码块部分的 代码执行完后跳出异常处理,继续向下执行。
  • 可以extends Exception 自定义自己的异常处理类
  • 可以捕获多个异常,异常的类别根据catch(类型)中的类型决定进入哪一个异常处理分支,如果都不满足则进入最后一个异常处理分支中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值