大家知道,在可選鏈(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("
測試結束")
("-----------")}
執行結果如下:
即將開始測試
測試中
,異常
測試結束
-----------
即將開始測試
測試中正常,
測試值= 8.4;結果=
optional("8.4")
測試結束
-----------
即將開始測試
測試中正常,
測試值= 12345.54321;
結果= nil
測試結束
-----------
換乙個更直觀的測試:
fordin[
2.6,
8.4,
12345.54321
]print("
測試結束")
("-----------")}
執行結果如下:
即將開始測試
測試中,
異常,測試值
= 2.6
測試結束
-----------
即將開始測試
測試中
正常,測試值
= 8.4;結果=
8.4
測試結束
-----------
即將開始測試
測試中
正常,測試值
= 12345.54321;結果
= nil
測試結束
-----------
丟擲類型別的異常
異常丟擲後,被選中的處理 是呼叫鏈中與該物件型別匹配且離丟擲異常位置最近的那個。如果丟擲的異常物件是乙個陣列,將轉換為指向陣列首元素的指標 如果丟擲的是乙個函式,則轉換為指向該函式的指標。丟擲throw之後,跟在throw後面的語句不會繼續執行。控制將從throw轉移到匹配的catch。該catch...
建構函式中丟擲的異常
建構函式中丟擲的異常 1 標準c 中定義建構函式是乙個物件構建自己,分配所需資源的地方,一旦建構函式執行完畢,則表明這個物件已經誕生了,有自己的行為和內部的執行狀態,之後還有物件的消亡過程 析構函式的執行 可誰能保證物件的構造過程一定能成功呢?說不定系統當前的某個資源不夠,導致物件不能完全構建好自己...
建構函式中丟擲的異常
標準c 中定義建構函式是乙個物件構建自己,分配所需資源的地方,一旦建構函式執行完畢,則表明這個物件已經誕生了,有自己的行為和內部的執行狀態,之後還有物件的消亡過程 析構函式的執行 可誰能保證物件的構造過程一定能成功呢?說不定系統當前的某個資源不夠,導致物件不能完全構建好自己。物件總是由不斷的繼承或不...