ios - 在对象初始化时为错误的参数值Objective-C引发错误

标签 ios objective-c exception error-handling initialization

原谅我,因为这是非常基本的,但是我想确认哪里是最好的出路。
我使用指定的初始值设定项,使用“initWith”类型的方法创建实例-
(instancetype)initSignUpParamsWithType:....
在指定的初始化程序的实现中,它类似于:

   self = [super init];
        if (self) {

            if (type != requiredType) {
                // what needs to be done in this case for raising a proper error? 
               return nil;
            }
            self.type = type;
            self.username = username;
            self.password = password;

现在,在上述方法中,如果某些参数值是而不是对象所要查找的值,则我想在初始化期间引发错误。在Java中,在这种情况下我们可以抛出异常。

我知道我们也可以在Objective-C中引发异常,但是这种错误不鼓励使用。可以看到这里讨论:
throwing an exception in objective-c/cocoa

有人可以指导我了解有关此问题的最佳做法吗?

最佳答案

如果您的目标是处理在测试期间很容易发现的愚蠢的编程错误,那么最简单的解决方案是使用NSAssert

例如:

NSAssert(type == requiredType, @"Bad programmer passed in incorrect type of %d", type);

用它代替if语句。更好的是,将其作为initSignUp...方法的第一行。

如果使用错误的类型调用该方法,则应用程序将崩溃,并显示NSAssert调用中提供的消息。

苹果的许多API使用的另一种选择是抛出NSInvalidArgumentException

关于ios - 在对象初始化时为错误的参数值Objective-C引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792131/

相关文章:

ios - 根据包含的文本更改 textView 高度

java - 如何测试任何方法调用是否抛出异常?

ios - 在 UITableViewController 中使用不同类型的单元格和不同的行数

ios - 如何删除以前的 ViewController

ios - 使用 GCD 在 NSMutableArray 中存储图像

.net - Awesomium WebControl 挂起

python - 用于 SWIG、Python 的 C 函数错误代码的 %typemap 和 %exception

ios - 为什么我不能从我的 Controller 添加到我的模型中的字典?

ios - NSRegularExpression 搜索字符串 "*string*"

iphone - 如何知道我的程序在 iPhone 5 上运行?