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()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容