12 catch()和函式的區別

2021-10-23 18:15:38 字數 476 閱讀 9414

copy的是靜態型別。

基類 &r=派生類;

throw r;//基類異常

catch(a a)//丟擲原來的異常(可能是動態型別),向外傳遞,

catch(a a)//丟擲異常a,向外傳遞,都是型別a異常

catch(),異常物件會被copy,再傳遞給catch,如果catch是by value傳遞引數,則異常物件被copy兩次。之所以異常物件被賦值,是因為,一旦異常被丟擲,就脫離了原來的作用域,就會被銷毀,所以要copy乙份。

轉型動作有兩個。

catch(基類 ),可以傳遞派生類引數。

catch(const void*),可以捕獲任何指標型別

多個catch,按先後順序被匹配,不是最佳匹配。

catch(基類){}

catch(派生類){}//總不會被執行

try和catch的用法

try catch 錯誤處理 執行規則 首先執行try中的 如果丟擲異常會由catch去捕獲並執行 如果沒有發生異常 catch去捕獲會被忽略掉 但是不管有沒有異常最後都會執行。try 語句使你能夠測試 塊中的錯誤。catch 語句允許你處理錯誤。throw 語句允許你建立自定義錯誤。丟擲錯誤 fi...

Promise中then和catch的執行過程

一直以來有個誤解,以為then和catch的執行就是乙個二選一的過程,直到後來遇到類似下面的 發現不是這麼一回事 promise.reject then catch promise.resolve then catch 執行結果自然是2 1 1 2 翻了一下then和catc 檔,catch是the...

Linux 下 2 1 和 1 2 的區別

近日在網上看題時遇到這麼一條題目 下面兩條命令分別會有怎樣的輸出 echo hello 1 2 grep aaa echo hello 2 1 grep aaa a 兩個均輸出hello b 第乙個無輸出,第二個輸出 hello c 第乙個輸出hello,第二個無輸出 d 兩個均輸出hello 正確...