【问题标题】:throwing an exception in an objective-c method when a required input parameter is nil?当所需的输入参数为 nil 时,在 Objective-C 方法中抛出异常?
【发布时间】:2011-12-10 14:47:10
【问题描述】:

注意到在 Objective-c 中重复使用异常的一般指导(例如throwing an exception in objective-c/cocoa)我仍然不太确定这种情况:

当所需的输入参数为零时,是否在 Objective-C 方法中抛出异常最佳实践/好的?

如果不是,那么在 Objective-c 中,典型的方法是什么?

【问题讨论】:

    标签: iphone objective-c ios nsexception


    【解决方案1】:

    这将是一个有效的异常,甚至是一个断言(这反过来又会抛出一个异常)。已经定义了 NSParameterAssert 宏,可以满足您的需求。

    【讨论】:

    • Joshua - 生产中会出现异常但是使用断言? (刚刚注意到 @saury 被建议 NSAsserts 不要打赌编译到发布版本中)
    • 是的,发布代码中仍然存在 NSAssert。它们没有被编译出来。
    【解决方案2】:

    NSAssert 更多是为了方便开发人员。开发人员使用它来检查假设/条件等。 需要注意的一点是,NSAssert 不会在发布版本中编译到您的代码中。

    您针对您的情况执行@throw NSException,因为它们仅适用于您希望在运行时处理代码无效输入的情况。

    NSErrors 也是 Apple 提供的另一个工具。它通常用于不是编程错误的不需要的条件(比如蓝牙硬件有缺陷,你的蓝牙相关应用程序依赖于此)

    【讨论】:

    • 您应该永远对无效的用户输入使用异常。代码中的错误存在例外。目的不是您捕获异常,而是您在代码中找到错误并修复它。就像“参数是必需的但为零”一样——这是调用者代码中的一个错误,所以正确的做法是抛出一个异常,如果它发生了,修复方法的调用者。 NSError 是针对应用程序无法控制的错误(错误的用户输入、服务器问题等)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2022-01-15
    • 2012-08-10
    • 1970-01-01
    • 2014-01-25
    • 2010-10-17
    相关资源
    最近更新 更多