1、错误和异常处理
2、断言
3、fatalError
1、错误和异常处理
- 在方法后面加throws关键字表示这个方法在调用的过程中可能会抛出异常,同时这个方法也可以有返回值,返回值类型写在throws关键字后面。
- 在调用含有关键字throws的方法时,需要在调用方法的语句前面加上try,然后通过catch捕获异常,可以有多个catch分支,catch语句实质上是在进行模式匹配。
- try语句包含在do语句中。
- 异常只是一个同步方法专用的处理机制,Cocoa框架里对于异步API出错时,保留了原来的NSError机制。
- try可以接!表示强制执行,这代表你确定知道这次调用不会抛出异常。如果在调用中出现了异常的话,你的程序将会奔溃,这和我们在对Optional值用!进行强制解包时的行为是一致的。另外,我们也可以在try后面加上?来进行尝试性的运行。try?会返回一个Optional值:如果运行成功,没有抛出错误的话,它会包含这条语句的返回值,否则将为nil。
- 值得一提的是,在一个可以throw的方法里,我们永远不应该返回一个Optinal的值。你在要throws另一个throws时,应该将前者改为rethrows。
2、断言
- assert(条件,条件不满足时触发断言奔溃时的提示内容)默认情况下断言在Debug的情况下开启,在Release的情况下被禁用,但是可以在对应target的Build Settings中,在Swift Compiler - Custom Flags中的Other Swift Flags中添加-assert-config Debug来强制启动断言,或者-assert-config Release来强制禁用断言。
3、fatalError
- fatalError(描述一下是什么原因导致致命错误的发生)
- 关于语法,唯一需要解释的是@noreturn,这表示调用这个方法的话可以不再需要返回值,因为程序整个都将终止。
- fatalError常用语提示“这个方法必须在子类中被重写”