func open(_ fileName:String) -> Int {
return 0
}
func close(_ fileName:String) -> Int {
return 0
}
func processFile(_ fileName:String) throws {
let file = open(fileName)
defer {
close(fileName)
}
var num1 = 10
var num2 = 0
// var result = num1/num2
}
在这个processFile函数中,因为涉及了文件操作,是需要关闭文件的,而在processFile这个函数的处理过程中,一般是最后才去关闭文件的,如果在过程中,就出现问题了,抛出异常到了外层函数去处理,那么文件是没有关闭的,可能会出现内存问题,但是如果使用了defer,这个函数的作用就是在processFile这个函数结束前,无论如何都会执行,就保证了安全。
func fn1() {}
func fn2() {}
func test() {
defer { fn1() }
defer { fn2() }
}
在test中,执行的顺序是先执行fn2,再执行fn1
网友评论