美文网首页
异常捕获

异常捕获

作者: Harely | 来源:发表于2020-03-12 12:44 被阅读0次

Swift异常处理的历史由来

  • Swift1.0版本 Cocoa Touch 的 NSError ,Swift并没有真正的具备自己的异常处理机制;
  • Swift2.0版本 加入 ErrorType protocol;
  • Swift3.0版本 改名 Error protocol;

  Swift3.0 Error protocol 的使用首先定义一个枚举,集成协议Error (Swift 2.0 的协议叫做ErrorType,3.0后协议改名Error)

enum MyError : Error {
    case one
    case two
    case three
}

三者区别

  • try 出现异常处理异常
  • try? 不处理异常,返回一个可选值类型,出现异常返回nil
  • try! 不让异常继续传播,一旦出现异常程序停止,类似NSAssert()

try? 的使用

try?, 如果不想处理异常那么可以用这个关键字,使用这个关键字返回一个可选值类型,如果有异常出现,返回nil.如果没有异常,则返回可选值

func testFunc(str: String) throws -> String  {
    if str == "one" {
        throw MyError.one
    }else if str == "two" {
        throw MyError.two
    }else if str == "three" {
        throw MyError.three
    }
    return "ok"
}

let str = try? testFunc(str: "three")
print(str)

打印:nil


throws和throw的使用

do {
    let str = try testFunc(str: "three")
    let str1 = try testFunc(str: "333")
    print("++++>> \(str)")
    print("--->> \(str1)")

} catch MyError.one {
    print("MyError.one")
} catch MyError.two {
    print("MyError.two")
} catch let error as MyError {
    print(error)
} catch {

}

///或者如下
do {
    let str = try testFunc(str: "three")
    let str1 = try testFunc(str: "333")
    print("++++>> \(str)")
    print("--->> \(str1)")

} catch MyError.one {
    print("MyError.one")
} catch MyError.two {
    print("MyError.two")
} catch {
    print(error)
}

都打印为:three


try!

如果不想处理异常,而且不想让异常继续传播下去,可以使用try!.这有点儿类似NSAssert().但是一旦使用try!后,在可能抛出异常的方法中抛出了异常,那么程序会立刻停止.

let str = try! testFunc(str: "three")
print(str)
程序Crash

相关文章

  • Python面向对象2

    异常 捕获异常image.png根据错误类型捕获异常image.png 未知错误捕获image.png 捕获异常完...

  • 工作总结-002

    异常捕获service捕获业务异常,自定义BaseException;interface捕获业务异常,以及其他异常...

  • C++学习第20课,异常

    1 异常 一句话概括:捕获异常 1.1 谁捕获异常?捕获谁? A捕获B A() { try{ B(); } ...

  • Python 面向对象 - 08 异常

    目录一、概念二、捕获异常2.1 简单的捕获异常语法2.2 错误类型捕获2.3 异常捕获完整语法三、异常的传递四、抛...

  • springboot 异常捕获和处理

    springboot 异常捕获和处理 异常捕获处理

  • iOS 异常捕获处理机制(初级篇)

    一、异常处理简介 二、异常捕获案例 使用@try catch捕获异常 例1是最简单的一种写法: 捕获异常之嵌套捕获...

  • python3.7异常小记

    首先上示例代码: 这段代码包含了,异常分支类型捕获,无异常捕获,有无异常都会捕获的执行逻辑。 捕获全局异常 对入口...

  • Python异常处理

    Python异常处理 一、捕获异常 1.异常捕获语法 2.错误类型捕获 except:处理所有异常。except ...

  • 自定义异常捕获 与 自定返回json 数据格式

    1. 自定义异常捕获 自定的异常 2 捕获异常 =================================...

  • python知识点

    异常捕获 try ... except 捕获所有异常 Exception as reselt 自己定义异常: ra...

网友评论

      本文标题:异常捕获

      本文链接:https://www.haomeiwen.com/subject/ldkujhtx.html