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

问题描述 投票:27回答:1

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

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

swift3 error-handling nserror
1个回答
36
投票

NSError是一个Cocoa类

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

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

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

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

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

Swift的错误处理系统是使用try - catch捕获错误的模式。它要求通过方法捕获的错误是thrown。这种模式比使用NSError实例的传统错误处理更加通用。如果你打算不实施try - catch,你实际上不需要Error协议。

© www.soinside.com 2019 - 2024. All rights reserved.