關於返回可選型別的異常丟擲函式

2022-08-18 18:54:10 字數 2063 閱讀 8422

大家知道,在可選鏈(optional chain)裡,返回可選型別的可選鏈返回的仍是可選型別。但是要注意的是,在異常處理裡,對於返回型別是可選型別(optional)的異常丟擲函式,其返回型別是可選的可選型別。

非常繞口是不是,對啦~就是這樣~2333333333。簡單來說,對於下面這個異常丟擲函式

func

errortest(by doublenum:

double

)throws

->

string

? 使用try?是返回的型別是string??

還是看例子。下面這個異常型別和之前一樣,異常丟擲函式則是之前函式的過載

enum

numtest:

int,

error

func

errortest(by doublenum:

double

)throws

->

string

? else}}

fordin[

2.6,

8.4,

12345.54321

]else

print("

測試結束")

print

("-----------")}

執行結果如下:

即將開始測試

測試中

,異常

測試結束

-----------

即將開始測試

測試中正常,

測試值= 8.4;結果=

optional("8.4")

測試結束

-----------

即將開始測試

測試中正常,

測試值= 12345.54321;

結果= nil

測試結束

-----------

換乙個更直觀的測試:

fordin[

2.6,

8.4,

12345.54321

]print("

測試結束")

print

("-----------")}

執行結果如下:

即將開始測試

測試中,

異常,測試值

= 2.6

測試結束

-----------

即將開始測試

測試中

正常,測試值

= 8.4;結果=

8.4

測試結束

-----------

即將開始測試

測試中

正常,測試值

= 12345.54321;結果

= nil

測試結束

-----------

丟擲類型別的異常

異常丟擲後,被選中的處理 是呼叫鏈中與該物件型別匹配且離丟擲異常位置最近的那個。如果丟擲的異常物件是乙個陣列,將轉換為指向陣列首元素的指標 如果丟擲的是乙個函式,則轉換為指向該函式的指標。丟擲throw之後,跟在throw後面的語句不會繼續執行。控制將從throw轉移到匹配的catch。該catch...

建構函式中丟擲的異常

建構函式中丟擲的異常 1 標準c 中定義建構函式是乙個物件構建自己,分配所需資源的地方,一旦建構函式執行完畢,則表明這個物件已經誕生了,有自己的行為和內部的執行狀態,之後還有物件的消亡過程 析構函式的執行 可誰能保證物件的構造過程一定能成功呢?說不定系統當前的某個資源不夠,導致物件不能完全構建好自己...

建構函式中丟擲的異常

標準c 中定義建構函式是乙個物件構建自己,分配所需資源的地方,一旦建構函式執行完畢,則表明這個物件已經誕生了,有自己的行為和內部的執行狀態,之後還有物件的消亡過程 析構函式的執行 可誰能保證物件的構造過程一定能成功呢?說不定系統當前的某個資源不夠,導致物件不能完全構建好自己。物件總是由不斷的繼承或不...