我正在学习斯威夫特。我正在设计一个需要在其初始化程序中进行参数验证的类。如果传递的值超出范围,我该如何处理?考虑到:我真的发现很难找到合适的方法来设计它:
- Swift 没有异常,在有异常和内置 try/catch 机制的语言中,我会抛出异常。
- Swift 不允许从初始化器返回 nil / null / Nothing 来指示错误情况,就像我们在 Objective-C 中所做的那样。
- 我觉得将 NSErrorPointer 传递给初始化器很麻烦,并且给类的使用者带来了不必要的负担。
如何在 Swift 中验证初始化器的参数?
现在使用 Swift 2.0,您可以抛出异常。例如:
enum Parameter: ErrorType {
case Empty
case Short
}
然后在您的函数中,您可以使用超级有用的防护来检查收到的内容是否有效,并执行以下操作:
guard parameter.characters.count > 0 else { throw Parameter.Empty }
然后你必须捕获这些异常:
do {
// call your method with try for example something like 'let var = try MyClass("test")'
} catch .Empty {
} catch .Short {
} catch {
print("Something else went wrong!")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)