【方式一】
使用try关键字,是最简便的,即甩锅,将这个抛出给别人(向上抛出,抛给上层函数)。但是在使用时,需要注意以下两点:
try? 返回一个可选类型,只有两种结果:
要么成功,返回具体的字典值
要么错误,但并不关心是哪种错误,统一返回nil
try! 表示你对这段代码有绝对的自信,这行代码绝对不会发生错误
//CJLTeacher中定义一个height属性,并未遵守协议
class CJLTeacher: CustomJSONMap {
var age = 18
var name = "CJL"
var height = 1.85
}
/*****1、try? 示例*****/
var t = CJLTeacher()
print(try? t.jsonMap())
/*****打印结果*****/
nil
/*****2、try! 示例*****/
var t = CJLTeacher()
print(try! t.jsonMap())
/*****打印结果*****/
Fatal error: 'try!' expression unexpectedly raised an error: _5_MirrorAndError.JSONMapError.notConformProtocol: file _5_MirrorAndError/main.swift, line 90
2020-12-20 18:27:28.305112+0800 05-MirrorAndError[18642:1408258] Fatal error: 'try!' expression unexpectedly raised an error: _5_MirrorAndError.JSONMapError.notConformProtocol: file _5_MirrorAndError/main.swift, line 90
<!--3、如果直接使用try,是向上抛出-->
// 错误是向上抛出的,即抛给了上层函数,如果上层函数也不处理,则直接抛给main,main没有办法处理,则直接报错
var t = CJLTeacher()
try t.jsonMap()
/*****打印结果*****/
Fatal error: Error raised at top level: _5_MirrorAndError.JSONMapError.notConformProtocol: file Swift/ErrorType.swift, line 200
2020-12-20 18:31:24.837476+0800 05-MirrorAndError[18662:1410970] Fatal error: Error raised at top level: _5_MirrorAndError.JSONMapError.notConformProtocol: file Swift/ErrorType.swift, line 200
【方式二】
使用do...catch
var t = CJLTeacher()
do{
try t.jsonMap()
}catch{
print(error)
}
参考资料:
iOS之swift中错误处理的方式
Swift Error