異常被捕獲後能夠不做處理,程序從捕獲位置繼續執行。而斷言是徹底沒法忽略的,程序在斷言失敗處當即終止。所以斷言一般用於調試版本,用來發現程序中的邏輯錯誤。雖然異常也能起到這樣的做用,可是不該該用異常代替斷言:
1) 若是發現了邏輯錯誤,必須修改程序,而不可能在程序中進行處理和恢復,因此不須要向外傳送,沒有必要使用異常。
2) 使用斷言的開銷比異常小得多,並且斷言能夠從發佈版中徹底去除。
ide
異經常使用於處理正確程序中的運行期問題(好比內存分配失敗,窗口建立失敗,線程建立失敗,打開文件失敗),以儘量恢復,而不是終止程序。對於運行異常,使用斷言是很是不合適的,理由很顯然:
1) 斷言在發佈版不起做用;
2) 斷言的處理方式不夠友好;
3) 運行異常不是程序錯誤,沒有必要報告源代碼出錯位置;spa