Swift学习笔记9--错误控制

1.Swift 中有4种处理错误的方式。你能够把函数抛出的错误传递给调用此函数的代码、用do-catch语句处理错误、将错误做为可选类型处理、或者断言此错误根本不会发生。函数

2.wift 中的错误处理并不涉及解除调用栈,这是一个计算代价高昂的过程。就此而言,throw语句的性能特性是能够和return语句相媲美的。性能

3.一个标有throws关键字的函数被称做throwing 函数。若是这个函数指明了返回值类型,throws关键词须要写在箭头(->)的前面。只有 throwing 函数能够传递错误。任何在某个非 throwing 函数内部抛出的错误只能在函数内部处理。spa

4.能够使用try?经过将错误转换成一个可选值来处理错误。若是在评估try?表达式时一个错误被抛出,那么表达式的值就是nilcode

let x = try? someThrowingFunction()
//等价于
let y: Int?
do {
    y = try someThrowingFunction()
} catch {
    y = nil
}

5.能够在表达式前面写try!来禁用错误传递,这会把调用包装在一个断言不会有错误抛出的运行时断言中。若是实际上抛出了错误,你会获得一个运行时错误。blog

6.能够使用defer语句在即将离开当前代码块时执行一系列语句。该语句让你能执行一些必要的清理工做,无论是以何种方式离开当前代码块的——不管是因为抛出错误而离开,仍是因为诸如return或者break的语句。作用域

if exists(filename) {
        let file = open(filename)
        defer {
            close(file)
        }
       
        // close(file) 会在这里被调用,即做用域的最后。
    }
相关文章
相关标签/搜索