怎么让一个方法抛出异常
- 定义一个函数会抛出异常(后加throws)
- 在函数里抛出具体异常(具体异常值必须遵循Error协议)
//Error协议就是告诉编译器,这个枚举可以充当具体的异常值
enum FileError:Error{
case notExists
case notFormat
case noCoontent
}
func readFile(path:String) throws -> String{
//1.判断文件路径是否存在
let isExsits = FileManager.default.fileExists(atPath: path)
if !isExsits {
//这里抛出出现问题的原因
//如果想成为异常值,必须遵循一个Error协议
throw FileError.notExists
}
//2.读取文件内容
var content :String = ""
do {
content = try String(contentsOfFile:path)
}catch{
throw FileError.notFormat
}
if content.lengthOfBytes(using: String.Encoding.utf8) == 0{
throw FileError.noCoontent
}
return content
}
异常处理方式
- 使用do catch 处理
- 使用try? 处理 (try?代表我们知道这里可能会出异常,但是就是不想处理,如有问题就是nil)
- 使用try! 处理(try!表示我确信没有任何异常!!!!不安全)
let path = Bundle.main.path(forResource:"text.txt",ofType:nil) ?? ""
//1.do catch
do{
let content:String = try readFile(path: path)
}catch{
print(error)
}
//2.try?
let content2 :String = try? readFile(path: path)
//3.try!
let content3 :String = try! readFile(path: path)
网友评论