【发布时间】:2015-11-06 17:48:19
【问题描述】:
这是我当前的代码
class HelloWorld {
func foobar() {
// ...
}
}
如何让这个函数在被调用并发生意外情况时抛出异常?
【问题讨论】:
-
文档很有用。您应该在发布问题之前查看一下。
标签: swift error-handling try-catch swift2
这是我当前的代码
class HelloWorld {
func foobar() {
// ...
}
}
如何让这个函数在被调用并发生意外情况时抛出异常?
【问题讨论】:
标签: swift error-handling try-catch swift2
根据 Swift 文档:
抛出错误
要表明一个函数或方法可以抛出一个错误,你写 throws 关键字在其声明中,在其参数之后。如果它 指定返回类型,你可以在前面写 throws 关键字 返回箭头 (->)。函数、方法或闭包不能抛出 除非明确指出,否则错误。
Apple's documentation 中有大量关于此主题的信息
错误是使用枚举来表示的,因此通过枚举创建一些您想要的错误,然后使用throw 关键字来执行此操作。
示例:
enum MyError: ErrorType{
case FooError
}
func foobar() throws{
throw MyError.FooError
}
【讨论】:
首先,您可以创建一个包含错误的枚举,并实现ErrorType 协议
enum MyError: ErrorType{
case Null
case DivisionByZero
}
然后,您可以使用throw 调用您的错误
throw MyError.DivisionByZero
所以,除法函数可能是这样的
func divide(x: Int, y: Int) throws -> Float{
if(y == 0){
throw MyError.DivisionByZero
}
else{
return x / y
}
}
【讨论】:
docatch方法调用这个函数?例如checkisValidIntValue(x: 10, y: 20); func checkisValidIntValue(x: Int, y: Int) throws { guard x > 0 else {throw some.Error} let value = try? divide(x: x, y: y) //... here what to do when got success value and want to throw failure value else do operation with ouptu value in this same function}