Swift中Error和NSError之间有什么区别?

Wil*_*son 31 error-handling nserror swift3

我正在创建一个应该返回错误的库,所以我想知道哪个应该用于我的目的.

更新: 我应该澄清,返回的结果将来自异步调用,所以我需要通知用户是否有错误,我想知道哪种类型我应该使用Error或NSError.

vad*_*ian 38

NSError是一个Cocoa

一个NSError对象封装有关的可延伸的,面向对象的方式的错误状态的信息.它由预定义的错误域,特定于域的错误代码和包含特定于应用程序的信息的用户信息字典组成.

Error是一个Swift 协议,类,结构和枚举可以并且NSError确实符合.

表示可以抛出的错误值的类型.

声明符合Error协议的任何类型都可用于表示Swift错误处理系统中的错误.由于Error协议没有自己的要求,因此可以对您创建的任何自定义类型声明一致性.

引用的部分是文档中的字幕说明.

斯威夫特的错误处理系统是利用捕获错误的图案try - catch.它要求thrown通过方法捕获错误.这种模式比使用NSError实例的传统错误处理更加通用.如果您计划实施try - catch,实际上不需要Error协议.

  • `ErrorType` - > Swift 2,`Error` - > Swift 3 @Honey (7认同)