1、do-try-catch:先尝试操作,如果失败则处理错误,完成后释放资源。
do {
try 语句
成功处理语句组
} catch 匹配错误 {
错误处理语句组
}
2、Swift错误类型必须遵从Error协议
enum DAOError:Error {
case noData
case primaryKeyNull
}
3、声明抛出错误
方法没有返回值,throws关键字放在参数后面
func remove(_ model: Note) throws { }
方法有返回值,throws关键字放到参数和返回值之间
func findAll() throws -> [Note] { }
4、在函数或方法中抛出错误
①在函数或方法中,通过throw语句认为的抛出错误
②在函数或方法中,调用其他可以抛出错误的函数或方法完成,但是没有捕获处理,会导致错误被传播出来
5、throw和throws区别
throw关键字用于在方法或函数内,人为地抛出错误,而非系统抛出的错误。
throw后面跟有抛出的错误类型。
throws关键字用于方法或函数声明抛出错误,声明了抛出错误的方法或函数可以不处理错误,有错误发生后则将错误传播给它的调用者。
6、try、try?和try!区别
try与do-catch语句配合使用,进行错误捕获处理。
try?语句将错误转换为可选类型,如果有错误发生则nil被返回。
try!语句可以打破错误传播链条,但是如果真的发生错误就出现运行期错误,导致程序的崩溃。