為什麼要進行異常處理
程式因為各種原因出現問題導致的結果是程式直接崩潰,結果和開發過程出現的問題結果大不一樣。因此需要使用異常的處理來防止軟體系統崩潰
程式中的安全隱患
網路故障導致資料庫連線問題
使用者的非法操作(資料驗證失敗)
資料處理中的任何意外(例如:查詢超時,資源檔案丟失等)……
了解異常類exception
.net framework中的異常的設計結構
常見的異常類
與引數有關的異常
此類異常類均派生自systemexception,用於方法成員傳遞引數時發生的異常
argumentexception:用於處理引數無效的異常
formatexception:用於處理引數格式錯誤的異常
與陣列有關的異常
此類異常類均派生自systemexception
indexoutofrangeexception:用於處理索引超出陣列長度所引發的異常
arraytypemismatchexception:用於處理陣列中儲存資料型別不正確的元素所引發的異常
與io有關的異常
ioexception:用於處理進行檔案輸入輸出操作時所引發的異常
與記憶體溢位有關的異常
overflowexception:用於處理程式邏輯錯誤造成的死迴圈異常
與算術有關的異常
arithmeticexception:用於處理與算術有關的異常,比如0作為除數
與資料庫操作有關的異常
dbexception:用於處理所有資料來源操作異常類的基類
sqlexception:用於處理針對sql資料來源的異常,比如資料庫連線錯誤
處理異常的常用方法
異常處理的形式
即時處理:發現異常後隨時處理並恢復程式
丟擲異常:捕獲異常後,重新封裝異常資訊或直接拋給呼叫者
編寫異常處理的原則
在任何可能會發生異常的地方進行新增異常處理的方法
異常物件提供的重要資訊
屬性名稱 說明
source 此屬性表示導致異常發生的應用程式或物件的名稱
message 提供引發異常的詳細描述資訊
stacktrace 提供在堆疊上所呼叫方法的詳細資訊,並首先顯示最近呼叫的方法
使用try-catch捕獲和處理
try中放可能會出現異常的**
catch中表示如果try中的**出現了異常則會直接進入到catch中執行
無論是否try中的**會不會發生異常,最終都會執行finally中的**
finally不是必須的模組
異常傳遞與自定義方法
異常處理和日常工作一樣
「底層方法」將第一次捕獲的異常傳遞給上級呼叫者進一步詳細處理
「中層呼叫者」可以用多路捕獲異常並封裝詳細異常資訊
「頂層呼叫者」即在使用者介面中繼續處理異常
相當於:
頂層呼叫者是客戶-出現異常只需要告訴客戶可能操作未成功的人性化原因描述
中層呼叫者-程式的開發人員,在開發程式時對於可能發生的異常進行初步處理
底層方法-維護人員,將異常的詳細資訊匯報,並進行異常處理
程式集異常問題
程式因為各種原因出現問題導致的結果是程式直接崩潰,結果和開發過程出現的問題結果大不一樣。因此需要使用異常的處理來防止軟體系統崩潰 網路故障導致資料庫連線問題 使用者的非法操作 資料驗證失敗 資料處理中的任何意外 例如 查詢超時,資源檔案丟失等 net framework中的異常的設計結構 此類異常類...
QT程式異常結束問題分析
qt程式異常結束分為 執行中異常結束往往就是程式卡死,長時間無法響應,或者響應一段時間後異常結束。卡死一段時間異常結束很大的可能就是記憶體洩漏的情況,首先檢查一下指標是否只定義了卻沒有沒有初始化,或者指向的內容為nullptr,直接使用了,導致使用的指標根本沒有東西,所以程式崩潰。啟動異常結束就是還...
異常處理程式(Exception handler)
當然,丟擲的異常必須在某處得到處理。這個 地點 就是 異常處理程式 exception handler 針對每個要捕獲的異常,你得準備相應的處理程式。異常處理程式緊跟在 try 區塊之後,以關鍵字 catch 表示 try catch type1 id1 catch type2 id2 catch ...