簡介
異常項簡單來說是指程式或系統運行過程中出現的警告或錯誤,這些異常項一般會影響程式的健壯性、可靠性和安全性。為了增強系統的健壯性和可靠性,引入了異常處理機制。異常是指程式執行過程中發生的特殊事件,可能是錯誤(例如數學表達式中除數為 0),也可能是程式設計師定義的某一需要注意的情況。研究表明,對異常不作處理或處理不當將導致系統的崩潰,對異常的研究已經滲透到了軟體設計的各個方面,甚至把異常處理技術固化到了程式設計語言中 。
異常處理機制
異常處理機制通常從下面幾方面進行說明:
(1) 外部表現。Java 語言的異常處理機制是語言固有的,其外部表現形式包括 3 部分,每部分都與一個 Java 關鍵字聯繫。Throws 後面跟隨全部潛在的異常類型, 說明該方法可能拋出的異常,Java 編 譯 器 強 制 調 用 該 方 法 的 代 碼 處 理 這 些 事 件 ;Try-Catch-Finally 塊(Finally 塊可選)將所有可能拋出異常的代碼部分放入 try 塊(保護區)中,對可能拋出的異常的處理放在 Catch 塊中, Finally塊用於恢復系統的狀態;Throw 後面跟隨異常對象,表示方法拋出該異常對象給方法的調用者;Throw語句一般放在 try 塊中。由此可見,Java 的異常處理機制把異常處理代碼與普通代碼分開了,保護區的粒度是塊,而不是語句。
(2) 保護區與異常處理程式的關聯。Java 語言的異常處理機制採用靜態關聯。靜態確定異常類型與捕獲它的異常處理程式的關係,不同的異常匹配、不同的異常處理程式,與執行路徑無關。
(3) 異常的表示。在異常的產生和傳播中,Java語言使用對象表示異常,並可以攜帶異常發生時的狀態信息,主要是異常對象的類型。異常發生時,首先使用new 創建異常對象於記憶體堆中,然後終止當前執行路徑,並從當前的環境中釋放出異常對象的句柄。程式的流程轉向異常處理程式。
(4) 異常處理語義,即調用處理程式回響異常之後程式控制流的轉移方向。在異常控制理論中,存在兩種基本方法:中斷與恢復。Java 語言採用中斷模式。異常發生後,終止正在執行的塊,程式的流程轉向異常處理程式,完成異常處理後,返回到調用點繼續執行,與沒有發生異常而程式正常執行完保護區中的內容一樣。
影響
健壯性
健壯性是指一個計算機系統在執行過程中處理錯誤,以及算法在遭遇輸入、運算等異常時繼續正常運行的能力。 諸如模糊測試之類的形式化方法中,必須通過製造錯誤的或不可預期的輸入來驗證程式的健壯性。很多商業產品都可用來測試軟體系統的健壯性。健壯性也是失效評定分析中的一個方面。健壯性有時也和容錯性,可移植性,正確性有交叉的地方。比如,一個軟體可以從錯誤的輸入推斷出正確合理的輸入,這屬於容錯性量度標準,但是也可以認為這個軟體是健壯的。
可靠性
評價計算機系統的一種指標。在規定的工作時間內和工作條件下,一個系統、設備或元件能正確工作而不發生故障或失效的機率。計算機系統的可靠性通常用平均故障間隔時間來表示;計算機器件的可靠性一般用單位時間內器件的失效幾率來表示;計算機軟體的可靠性是指軟體系統在意料的情況下能夠正確地工作(稱為正確性),而在意外的情況下也能做出適當的處理以避免造成嚴重的損害(稱為健壯性)。提高可靠性的措施主要有三條:對元器件進行嚴格篩選以提高其可靠性,即採用非容錯法;採用各種容錯技術和冗餘技術;設計較完善的診斷程式和檢測手段等。
安全性
評價計算機系統性能的一個指標。它標誌著程式和數據等信息的安全程度。在現代社會中,計算機在社會事務管理、軍事決策等方面的作用日益增大,必須解決信息的安全保密問題。為了提高安全性,除要求用戶方面建立完備的計算機使用管理制度和嚴格的保密措施外,系統應配備有防護能力的軟體,提供信息盜竊和信息破壞的防護措施。一般採用以下5種防護措施:限制法。通過作業系統來限制不同用戶對特定程度和數據的使用許可權。驗真法。使計算機系統能判定用戶的身份是否合法,並採取相應的措施。加密法。對處理過程中的信息加密,使盜竊者即使取得數據,也很難破譯。阻塞法。計算機工作過程中發現可疑的調用指令時,立即採取措施以阻塞信息的輸出和泄漏。偵察法。跟蹤和記錄可疑的調用並發出警告信號,從而引起操作管理人員的注意,採取相應的防護措施。