close
深夜精神好睡不著覺,順手拿起C++快速翻閱異常處理的章節,一口氣就把該章給看完,看完以後深深有種感慨:為啥以前學生時代會覺得C++異常很深奧呢?
C++異常其實被後來的繼承者們如C#,Java等給改良過了,由於繼承者更加物件導向化,所以其異常處理的使用上與功用上看起來都比C++要簡單而易用,但今天翻過一遍C++的異常處理,感覺好像也沒差那麼多了。
在此把我印象深刻的一些重點Share一下,不是要完整介紹,只是note一下。
- 丟出異常的基本程式結構:
try { …. throw exception_object; } catch( ExceptionType ex1) { Exception 1 process } catch( ExceptionType ex1) { Exception 2 process } … catch(…) { Other Exception process } Other statement
當程式走進 try … catch 區塊,便可能引發exception,在C++中是透過throw這個keyword來丟出exception object,然後會依照catch exception的順序比對哪一個catch區塊是補捉該相對exception object的區塊,如果沒有任何catch區塊符合,則會進入catch(…)區塊進行exception的處理,在catch處理完之後會繼續走以下未執行完的程式碼 Other statement.
- 預告函式可能會拋出的Exception有哪些:當進行函式宣告或定義時,可以在宣告最後面加上Exception List預告呼叫該函式時有哪些exception可能會被拋出。
Case 1.
returnType functionName(type arg1, type arg2,…) throw (ExceptionType List) { //function body statement … throw exception object 1; … throw exception object 2; …. }
Case 2.
returnType functionName(type arg1, type arg2,…) throw () { //function body statement }
- 在寫程式時,如果是屬於簡單的邏輯處理,則用if敘述即可,拋出異常是用在非預期錯誤的情況。
以上大概分享這幾項重點,此刻已是凌晨破曉時分,我終於也出現一絲睡意,為避免白天工作也拋出exception,是時候該讓自己進入休眠狀態了。
2018年1月17日星期三 6:03 AM
文章標籤
全站熱搜