class SomeClass {
var someProperty: Int {
throw Err("SNAFU")
}
}
对于上面这样的代码,swift二进制抱怨'错误未被处理,因为封闭函数未被声明为'throws'。
如何在上面声明'someProperty''抛出'?
class SomeClass {
var someProperty throws: Int {
}
}
和
class SomeClass {
var someProperty: throws Int {
}
}
和
class SomeClass {
var someProperty: Int throws {
}
}
似乎没有工作。
截至Swift 3:
你不能从计算属性中抛出。如果你想扔,你必须使用一个功能。 Declarations section of the Language Reference末尾的The Swift Programming Language部分仅列出throws
(和rethrows
)作为函数和初始化器声明的关键字。
虽然从Swift的计算属性中找不到throw
是不可能的,但我发现Chris Lattner自己在one of Apple Developer Forums threads上解决了同样的问题:
我们同意你应该能够在下标和计算属性中将getter和setter标记为“throws”,但还没有到达那里。我们可能会在某个时候支持这一点,但目前尚不清楚它是否能及时赶上Swift 2。