用位运算设计复杂的错误报告

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

通过位运算设计错误报告是一种很常见的方法,下面通过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

是不是很灵活呢。

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

原文地址:https://www.cnblogs.com/niniwzw/p/1652165.html