swift异常

throws

将异常抛出,交给调用者处理

  • 先定义一个错误信息枚举,继承于 Error
  • 再将异常需要的地方将异常抛出
  • 注:如果有返回值,throws 关键字要写在返回值之前
enum CBToolError : Error{
    case errorOne
    case errorTwo
    
}

static func getName() throws -> String {
    let a = arc4random_uniform(3)
    if a == 0 {
        throw CBToolError.errorOne
    } else if a == 1 {
        throw CBToolError.errorTwo
    }
    return "漫步者"
}

在调用的时候,必须对异常有处理,否则编译中就会报错


do-catch

处理异常

  • 需联合 try 来使用
  • 如果 getName() 没有抛出异常,就走 do 中的内容,抛出了异常,就走对应的 catch 中的内容
static func myTest() {
    do {
        let name = try CBTool.getName()
        print(name)
    } catch CBToolError.errorOne {
        print("错误1")
    } catch CBToolError.errorTwo {
        print("错误2")
    } catch {
        print("其它错误")
    }
}

try?

将值解析为可选(Optional)类型

  • 如果抛出异常,则返回值为 nil
let name = try? getName()
//这里 name 类型为 String?

try!

直接当做不会抛出异常处理,如果出现异常则程序崩溃(非常不建议这么做,这样解析抛异常也就失去意义了)

let name = try! getName()

你可能感兴趣的:(swift异常)