为错误的参数值初始化对象时引发错误 Objective-C
Raising an error while object initialisation for wrong param value Objective-C
请原谅我,因为它很基础,但我想确认一下最好的方法是什么。
我正在使用 "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;
现在,在上面的方法中,如果某些参数值 NOT 是对象所寻求的,我想在初始化期间引发错误。在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
调用中提供的消息。
Apple 的许多 API 使用的另一个选项是抛出 NSInvalidArgumentException
。
请原谅我,因为它很基础,但我想确认一下最好的方法是什么。 我正在使用 "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;
现在,在上面的方法中,如果某些参数值 NOT 是对象所寻求的,我想在初始化期间引发错误。在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
调用中提供的消息。
Apple 的许多 API 使用的另一个选项是抛出 NSInvalidArgumentException
。