2016-11-18 134 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