我正在创建一个应该返回错误的库,所以我想知道哪一个应该用于我的目的。
更新 我应该澄清一下,返回的结果将来自异步调用,所以我需要告知用户是否有错误,我想知道哪种类型我应该使用Error或NSError。
答案 0 :(得分:34)
NSError
是Cocoa 类
NSError
对象以可扩展的,面向对象的方式封装有关错误条件的信息。它由预定义的错误域,特定于域的错误代码和包含特定于应用程序的信息的用户信息字典组成。
Error
是一个Swift 协议,其类,结构和枚举可以和NSError
一致。
表示可以抛出的错误值的类型。
声明符合
Error
协议的任何类型都可用于表示Swift错误处理系统中的错误。由于Error
协议没有自己的要求,因此您可以声明对您创建的任何自定义类型的一致性。
引用的部分是文档中的字幕描述。
Swift的错误处理系统是使用try - catch
捕获错误的模式。它要求通过方法捕获的错误为thrown
。此模式比使用NSError
实例的传统错误处理更加通用。如果您计划不来实施try - catch
,那么您实际上不需要Error
协议。