複製鏈接
請複製以下鏈接發送給好友

異常記錄

鎖定
異常是指在程序運行過程中發生的異常事件,通常是由硬件問題或者軟件設計問題所導致的。異常記錄是指計算機系統用於記錄異常數據項的集合,異常記錄一般保存在特定的文件中,通過對異常記錄的分析,能更快地找到異常發生之處並對異常進行處理。
中文名
異常記錄
外文名
exception record
學    科
計算機
定    義
記錄異常數據項的集合
有關術語
異常
領    域
計算機系統

異常記錄簡介

異常記錄是指計算機系統用於記錄異常數據項的集合。在計算機系統中,異常記錄一般保存在日誌文件中,即對異常記錄分析,通過調用有關的日誌文件即可。異常記錄保存和分析能幫助人們進一步發現軟件系統和硬件的不足,促進對系統的優化。在實際應用中,異常記錄有時是指系統收集某些記錄與實際記錄不符合,例如收集氣象有關記錄時,經常會出現一些異常記錄。

異常記錄日誌文件

在計算機領域,日誌文件(logfile)是一個記錄了發生在運行中的操作系統或其他軟件中的事件的文件,或者記錄了在網絡聊天軟件的用户之間發送的消息。日誌記錄(Logging)是指保存日誌的行為。最簡單的做法是將日誌寫入單個存放日誌的文件。許多操作系統、軟件框架和程序都包含日誌系統。廣泛使用的一項日誌標準是syslog,它在互聯網工程任務組(IETF)的RFC 5424中定義。syslog標準使專門的標準化子系統得以生成、過濾、記錄和分析日誌消息。這可以減輕軟件開發人員設計和編寫自己的臨時日誌系統的難度。運行日誌文件主要分為兩種格式: 以記錄為單位的運行日誌文件和以數據塊為單位的運行日 志文件。以記錄為單位的日誌文件需要登記的內容包 括: 各個事務的開始標記,各個事務的結束標記,各個事務的所有更新操作。每個事務開始的標記、 結束標記和每個更新操作均作為日誌文件中的一個 日誌記錄。日誌記錄的內容包括: 事務標識、操作 的類型(插入、刪除或者修改)、操作對象(記錄內部 標識)、更新前數據的舊值、更新後數據的新值。以數據塊為單位的日誌文件記錄的內容包括事 務標識和被更新的數據塊。由於將更新前的整個塊 和更新後的整個塊都放入日誌文件中,操作的類型 和操作對象等信息就不必放入日誌記錄中 [1]  。日誌一般可以分為事件日誌、事務日誌和消息日誌。
事件日誌(Event logs)記錄了在系統運行期間發生的事件,以便於瞭解系統活動和診斷問題。它對於瞭解複雜系統的活動軌跡至關重要,尤其是隻有很少用户交互的應用程序(例如服務器應用程序)。集成多個來源的日誌文件條目也是有用的。這種方法通過集成的統計數據分析,可能揭示出不同服務器上看似不相關的事件的相關性。其他解決方案則採用網絡範圍的查詢與報告機制。
大多數數據庫系統都維護某種事務日誌(transaction log),它們的作用並不是為了後續分析的審計活動,也不是為了便於人類閲讀。這些日誌記錄了對存儲數據的更改,以允許數據庫在發生崩潰或其他數據錯誤後恢復並維護存儲數據的一致狀態。因此數據庫系統通常具有常規事件日誌與事務日誌。
消息日誌:互聯網中繼聊天(IRC)、即時通信(IM)、有聊天功能的點對點網絡文件共享客户端,以及多人電子遊戲遊戲(尤其是MMORPG)通常都有自動記錄(保存)文本通信的功能,無論它是用户之間的公開還是私密通信。消息日誌一般都是普通的純文本文件,但即時通信和VoIP客户端(支持文字聊天,例如Skype)也可能使用HTML或某種自定義格式保存它們,以便於閲讀或加密。

異常記錄記錄

記錄是一組相關數據項的集合,用於描述一個對象在某方面的屬性。一個記錄應包含哪些數據項,取決於需要描述對象的哪個方面。而一個對象,由於他所處的環境不同可把他作為不同的對象。例如,一個學生,當把他作為班上的一名學生時,對他的描述應使用學號、姓名、年齡及所在系班,也可能還包括他所學過的課程的名稱、成績等數據項。但若把學生作為一個醫療對象時,對他描述的數據項則應使用諸如病歷號、姓名、性別、出生年月、身高、體重、血壓及病史等項。在諸多記錄中,為了能惟一地標識一個記錄,必須在一個記錄的各個數據項中,確定出一個或幾個數據項,把它們的集合稱為關鍵字(key)。或者説,關鍵字是惟一能標識一個記錄的數據項。通常,只需用一個數據項作為關鍵字。例如,前面的病歷號或學號便可用來從諸多記錄中標識出惟一的一個記錄。然而有時找不到這樣的數據項,只好把幾個數據項定為能在諸多記錄中惟一地標識出某個記錄的關鍵字 [2] 

異常記錄異常處理

異常處理,是編程語言或計算機硬件裏的一種機制,用於處理軟件或信息系統中出現的異常狀況(即超出程序正常執行流程的某些特殊條件)。異常處理作為一種有效的軟件容錯機制一直得到學術界和工業界的廣泛研究和應用 [3]  。各種編程語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區別在於:錯誤檢測是在正常的程序流中,處理不可預見問題的代碼,例如一個調用操作未能成功結束)。某些編程語言有這樣的函數:當輸入存在非法數據時不能被安全地調用,或者返回值不能與異常進行有效的區別。例如,C語言中的atoi函數(ASCII串到整數的轉換)在輸入非法時可以返回0。在這種情況下編程者需要另外進行錯誤檢測(可能通過某些輔助全局變量如C的errno),或進行輸入檢驗(如通過正則表達式),或者共同使用這兩種方法。通過異常處理,我們可以對用户在程序中的非法輸入進行控制和提示,以防程序崩潰。從進程的視角,硬件中斷相當於可恢復異常,雖然中斷一般與程序流本身無關。
從子程序編程者的視角,異常是很有用的一種機制,用於通知外界該子程序不能正常執行。如輸入的數據無效(例如除數是0),或所需資源不可用(例如文件丟失)。如果系統沒有異常機制,則編程者需要用返回值來標示發生了哪些錯誤。
參考資料