'self' 在 'catch' 块内使用,可从 super.init 调用访问
'self' used inside 'catch' block reachable from super.init call
此代码未在 Swift 3.3 上编译。它显示消息:'self' used inside 'catch' block reachable from super.init call
public class MyRegex : NSRegularExpression {
public init(pattern: String) {
do {
try super.init(pattern: pattern)
} catch {
print("error parsing pattern")
}
}
}
那会是什么?
如果 super.init
失败,则对象未完全初始化,在这种情况下,您的初始化程序也必须失败。
最简单的解决方案是 throw
ing:
public class MyRegex : NSRegularExpression {
public init(pattern: String) throws {
try super.init(pattern: pattern)
// ...
}
}
或者作为可失败的初始化器:
public class MyRegex : NSRegularExpression {
public init?(pattern: String) {
do {
try super.init(pattern: pattern)
} catch {
print("error parsing pattern:", error.localizedDescription)
return nil
}
// ...
}
}
此代码未在 Swift 3.3 上编译。它显示消息:'self' used inside 'catch' block reachable from super.init call
public class MyRegex : NSRegularExpression {
public init(pattern: String) {
do {
try super.init(pattern: pattern)
} catch {
print("error parsing pattern")
}
}
}
那会是什么?
如果 super.init
失败,则对象未完全初始化,在这种情况下,您的初始化程序也必须失败。
最简单的解决方案是 throw
ing:
public class MyRegex : NSRegularExpression {
public init(pattern: String) throws {
try super.init(pattern: pattern)
// ...
}
}
或者作为可失败的初始化器:
public class MyRegex : NSRegularExpression {
public init?(pattern: String) {
do {
try super.init(pattern: pattern)
} catch {
print("error parsing pattern:", error.localizedDescription)
return nil
}
// ...
}
}