【问题标题】:What's the difference between Error and NSError in Swift?Swift 中的 Error 和 NSError 有什么区别?
【发布时间】:2017-03-03 22:19:17
【问题描述】:

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

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

【问题讨论】:

    标签: swift3 error-handling nserror


    【解决方案1】:

    NSError 是一个 Cocoa

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

    Error 是一个 Swift protocol,类、结构和枚举可以和 NSError 符合。

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

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

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

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

    【讨论】:

    • 很有趣,所以我应该使用错误协议作为从我的库中返回错误的类型。
    • 如果您正在计划抛出错误的方法,那么可以。
    • 在我的情况下,闭包将有一个参数作为错误。
    • 我了解,但据我所知 try - catch 不适用于异步调用,因此我打算使用错误作为参数。
    • ErrorType -> 斯威夫特 2,Error -> 斯威夫特 3 @Honey
    猜你喜欢
    • 1970-01-01
    • 2019-10-12
    • 2017-04-15
    • 2018-03-21
    • 2015-02-10
    • 2017-09-04
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多