zoukankan      html  css  js  c++  java
  • 用位运算设计复杂的错误报告

    错误处理是程序中的一个很重要的部分。合理的错误报告的的设计,可以让我们的调试变的轻松。

    通过位运算设计错误报告是一种很常见的方法,下面通过PHP 中处理错误报告的方式,阐述错误报告的处理方法。

    1. 定义错误。

    一般,每一个位代表一个错误,那么一个unsiged int 可以定义 32 种错误。这里列举PHP4 中的定义方法:

       

       

       

    0x001

    E_ERROR

    致命的运行时错误(它会阻止脚本的执行)

    0x002

    E_WARNING

    运行时警告(非致命的错误)

    0x004

    E_PARSE

    解析错误

    0x008

    E_NOTICE

    注意(事情可能是或者可能不是一个问题)

    0x100

    E_USER_ERROR

    用户生成的错误消息,由trigger_error()函数生成

    0x200

    E_USER_WARNING

    用户生成的警告,由trigger_error()函数生成

    0x400

    E_USER_NOTICE

    用户生成的注意,由trigger_error()函数生成

    0x800

    E_STRICT

    关于兼容性和互操作性的建议

    0xFFF

    E_ALL

    所有的错误、警告和建议

    前面的错误是每种占用一个位,第5-8位保留, 12位以后的也不管了。关键的地方,要定义一个E_ALL,是所有的位都为1.

    2. 错误函数的书写

    首先要定义一个全局变量:如error_reporting,然后,比如在error 函数里面,加这样一个判断:

    if (error_reporting & E_ERROR) {

        显示错误

    否则就不做任何的处理。

    这个位运算应该很清楚了,只有E_ERROR 所在位为1 的情况下,才会显示错误。

    3. 定义错误类型

    上面基本上已经说了基本的原理,现在我们定义一些类型,指明他 的用法。

    1. error_reporting = 0 关闭所有错误

    2. error_reporting = E_ALL  打开所有错误

    3. error_reporting  = E_ALL  & ~E_STRICT   打开所有错误 但是排除E_STRICT   

    4. error_reporting = E_ERROR | E_PARSE 打开 E_ERROR 或者 E_PARSE

    是不是很灵活呢。

    这种错误报告是位运算的一个经典应用,当然,它不仅仅应用于错误报告,比如,可以用于系统的配置。

  • 相关阅读:
    Ubuntu 上 hi3531 交叉编译环境 arm-hisiv100nptl-linux 建设过程
    计算机系统巡回赛的深入理解(三)机器级表示计划
    iOS设备定位
    NDK/JNI学习--进口hello-jniproject
    IP Camera 和 Web Camera 差分
    ORA-00020的思考
    SSL&TLS传输层加密协议实现图解--(重要)
    iOS 中可用的受信任根证书列表
    iOS 9 中可用的受信任根证书列表
    图解SSL/TLS协议
  • 原文地址:https://www.cnblogs.com/niniwzw/p/1652165.html
Copyright © 2011-2022 走看看