2016-11-18 131 views
3

我試圖處理字符串,並設置出現「嘗試」斯威夫特:扔功能沒有通話中「嘗試」表達

var str = String() 
do{ 
    let str = try self.processMyString(strToProcess) 

}catch{ 

} 

但我發現了這個錯誤:

no calls to throwing functions occur within 'try' expression 

任何你知道爲什麼這個錯誤或我該如何解決它?

我真的很感謝你的幫助。

+3

顯然'processMyString()'不'throw'。你爲什麼用'try'來稱呼它? –

回答

2

如果你的功能可能會導致錯誤,它定義成這樣

func canThrowErrors() throws -> String 

像發現here

然後你就可以使用嘗試像你這樣做了。

1

processMyString不是throw,所以沒有理由將它作爲do/catch塊中的一個。

更進一步,你宣佈一個名爲str是陰影外var變量命名str,你可能不打算在本地let不變。

只是這樣做:

let str = self.processMyString(strToProcess) 
+1

如何知道過程中是否有錯誤? – user2924482

+0

你是什麼意思? – Alexander