如何區分軟體錯誤和異常

2021-04-25 14:22:40 字數 949 閱讀 5460

錯誤:系統本身不符合設計期望的行為或者狀態。

產生錯誤的原因有三:需求所依賴的假定不能成立、設計沒有匹配需求、設計所依賴的假定不能成立、實現沒有匹配設計。 表現為需求錯誤、需求遺漏、邏輯錯誤、記憶體讀寫錯誤、關鍵計算資源計算錯誤等等。

軟體自身能夠檢測到錯誤的原因是下一步的正確執行總是建立在上一步能夠被成功執行的前提之上。如果我們在軟體中設立一些檢測點,對前提進行測試,則軟體就有可能自己發現錯誤。比如pre-condition和post-condition以及不變式就是重要的執行前提。

按照對系統狀態一致性的影響,錯誤可以劃分為兩類:

a)錯誤發生後不影響系統狀態,比如沒有內部狀態的計算函式中的錯誤

b)錯誤發生後影響系統狀態,比如修改儲存資料過程中發生的錯誤

b類錯誤由於對系統狀態的影響,通常導致系統的後續行為難以預料,相比a類危害更大。

另外,對於b類錯誤,我們可以使用下面的技術來降低錯誤的影響:

a)採用位址空間隔離等技術來縮小狀態被影響的範圍。

b)重啟整個系統或者特定的子系統,消除偶發錯誤在系統中留下的遺跡,以避免隨後有這些遺跡導致的派生錯誤。

另外錯誤雖然不能自癒,只有透過修改系統來解決,但是錯誤的觸發是有條件的,這就啟發我們可以在檢測到錯誤後關閉會觸發錯誤的服務,將系統降級執行。

異常:外部環境的不同尋常的行為或者狀態。

這種不同尋常的行為或者狀態導致系統正常提供服務的前提得不到滿足,導致無法完成期望的功能。比如操作員沒有按正常的流程輸入操作指令,來自網路的錯誤報文,協議報文丟失等等。

異常是系統必須要處理的事件和狀態,通常作為非功能性需求的一部分被編檔。如果在需求階段異常用例被遺漏,就會產生乙個設計不匹配真實需求的錯誤。

在定義和設計系統時就應該規劃好異常的應對方案,系統應該有確定的異常響應方式,比如系統的內部一致性不能因異常條件而被破壞,在異常條件消失後,系統應能正常提供服務。

錯誤和異常

錯誤和異常 try 語句體except 異常型別 處理語句 except 異常型別 處理語句 或 try 語句體except 異常型別1,異常型別2 處理語句 except exception 所有異常 except 異常型別 as 名稱 print as else 沒有異常才會執行 最終要執行的內...

錯誤和異常

try except語句的語法格式為 try 可能會產生異常的 except 異常類物件1 當前except子句處理異常的 except 異常類物件2 當前except子句處理異常的 當except後面的異常類與出現的異常相對應時,就會執行對應except下面的 如果程式出現的異常不在except後...

錯誤和異常

錯誤和異常 python中兩種錯誤 語法錯誤和異常。python assert 斷言 用於判斷乙個表示式,在表示式條件為false的時候觸發異常。在python中即便語法是正確的,在執行它的時候,也有可能傳送錯誤。執行期檢測到的錯誤被稱為異常。異常以不同的型別出現,這些型別都作為資訊的一部分列印出來...