深夜精神好睡不著覺,順手拿起C++快速翻閱異常處理的章節,一口氣就把該章給看完,看完以後深深有種感慨:為啥以前學生時代會覺得C++異常很深奧呢?

  C++異常其實被後來的繼承者們如C#,Java等給改良過了,由於繼承者更加物件導向化,所以其異常處理的使用上與功用上看起來都比C++要簡單而易用,但今天翻過一遍C++的異常處理,感覺好像也沒差那麼多了。

  在此把我印象深刻的一些重點Share一下,不是要完整介紹,只是note一下。

 

  1. 丟出異常的基本程式結構:
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.

 

  1. 預告函式可能會拋出的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 
}

  1. 在寫程式時,如果是屬於簡單的邏輯處理,則用if敘述即可,拋出異常是用在非預期錯誤的情況。

  以上大概分享這幾項重點,此刻已是凌晨破曉時分,我終於也出現一絲睡意,為避免白天工作也拋出exception,是時候該讓自己進入休眠狀態了。

 

2018117日星期三 6:03 AM

文章標籤
創作者介紹
創作者 jackterrylau 的頭像
jackterrylau

儒道哲學的浪漫人生

jackterrylau 發表在 痞客邦 留言(0) 人氣()