用位運算設計複雜的錯誤報告

2021-09-08 07:26:53 字數 1515 閱讀 3188

錯誤處理是程式中的乙個很重要的部分。合理的錯誤報告的的設計,可以讓我們的除錯變的輕鬆。

通過位運算設計錯誤報告是一種很常見的方法,下面通過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

是不是很靈活呢。

這種錯誤報告是位運算的乙個經典應用,當然,它不僅僅應用於錯誤報告,比如,可以用於系統的配置。

posted @

2010-01-20 10:45

暮夏 閱讀(

...)

編輯收藏

用位運算設計複雜的錯誤報告

錯誤處理是程式中的乙個很重要的部分。合理的錯誤報告的的設計,可以讓我們的除錯變的輕鬆。通過位運算設計錯誤報告是一種很常見的方法,下面通過php 中處理錯誤報告的方式,闡述錯誤報告的處理方法。1.定義錯誤。一般,每乙個位代表乙個錯誤,那麼乙個unsiged int 可以定義 32 種錯誤。這裡列舉ph...

PHP的錯誤報告error reporting

設定錯誤訊息回報的等級。語法 int error reporting int level 傳回值 整數 函式種類 php系統功能 內容說明 本函式用來設定錯誤訊息回報的等級,引數 level 是乙個整數的位元遮罩 bitmask 見下表。value constant 1e error 2e warn...

GUN C中的錯誤報告

在c語言中,很多庫函式在呼叫失敗時都會返回特定的值。比如返回 1,空指標,eof等。但是這些值僅僅表示的呼叫失敗,並未給出詳細的錯誤資訊。如果想檢視詳細的錯誤內容,就要去檢視errno的錯誤 errno在errno.h中定義。關於errno的解釋 乙個int型別,可修改的左值 errno包含了系統中...