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

时间:2016-10-21 14:37:34

标签: swift3 error-handling nserror

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

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

1 个答案:

答案 0 :(得分:34)

NSError是Cocoa

  

NSError对象以可扩展的,面向对象的方式封装有关错误条件的信息。它由预定义的错误域,特定于域的错误代码和包含特定于应用程序的信息的用户信息字典组成。

Error是一个Swift 协议,其类,结构和枚举可以和NSError一致。

  

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

     

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

引用的部分是文档中的字幕描述。

Swift的错误处理系统是使用try - catch捕获错误的模式。它要求通过方法捕获的错误为thrown。此模式比使用NSError实例的传统错误处理更加通用。如果您计划来实施try - catch,那么您实际上不需要Error协议。