throws: 表明抛出异常,搭配try时需要使用do-catch处理掉异常;使用try?有异常返回空,类似于可选解包;使用try!相当于强制解包,有异常会闪退
try:相当于异常处理工具,常和throw配合使用,作用同上
do-catch:异常处理器,如果方法中抛出异常,我们就在catch中将异常安全的处理掉。
enum SomeError : Error {
case ary(String)
case outOfBounds(Int,Int)//越界
case outOfMemory//内存溢出
}
func divide(_ v1: Int,_ v2:Int) throws -> Int{
if v2 == 0 {
throw SomeError.ary("0不能作为除数")
}
return v1/v2
}
func test1(){
do {
try divide(10, 0)
} catch let SomeError.ary(msg) {
print("参数错误",msg)
} catch let SomeError.outOfBounds(size, int){
print("数组越界\(size)和\(int)")
} catch SomeError.outOfMemory {
print("内存溢出")
} catch {
print("其他错误")
}
}
网友评论