错误处理
1.在Swift里,错误用遵循 Error 协议的类型的值来表示;
2.Error是一个空的protocol,它唯一的功能,就是告诉Swift编译器,某个类型用来表示一个错误;
3.通常,我们使用一个enum来定义各种错误的可能性
4.抛出一个错误用throw
// 1.定义异常
enum FileReadError : Error {
case FileISNull
case FileNotFound
}
// 2.改进方法,让方法抛出异常
func readFile(filePath : String) throws -> String {
// 1.filePath为""
if filePath == "" {
throw FileReadError.FileISNull
} // 2.filepath有值,但是没有对应的文件
if filePath != "/User/Desktop/123.plist" {
throw FileReadError.FileNotFound
}
return "123"
}
异常处理方式
1.用throwing 函数传递错误
2.try?方式
最终返回结果为一个可选类型。如果出现了异常,则返回一个nil.没有异常,则返回对应的值——》不处理异常
3.try!方式
告诉系统该方法没有异常,一旦如果出现了异常,则程序会直接崩溃
4.do catch(建议)
var result = try? readFile(filePath: "abc")
var result = try! readFile(filePath: "abc")
do{
try readFile(filePath: "abc")
}catch{//内置变量error
print(error)
}
指定清理
func processFile(filename: String) throws {
if exists(filename) {
let file = open(filename)
defer {
close(file)
}
while let line = try file.readline() {
// 处理文件。
}
// close(file) 会在这里被调用,即作用域的最后。
}
}