gpt4 book ai didi

ios - 调用可以抛出,但是没有标记 'try' 错误没有处理: NSRegularExpression

转载 作者:IT王子 更新时间:2023-10-29 05:05:11 25 4
gpt4 key购买 nike

我在String Extension中写了这个函数,但无法找出错误。

func isEmail() -> Bool {
let regex = NSRegularExpression(pattern: "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$", options: [.CaseInsensitive])

return regex.firstMatchInString(self, options: nil, range: NSMakeRange(0, characters.count)) != nil
}

错误是:

Call can throw, but it is not marked with 'try' and the error is not handled

最佳答案

NSRegularExpression(pattern:) 如果模式无效则抛出错误。在您的情况下,模式是固定的,因此模式无效将是一个编程错误

这是使用 try! 的“强制尝试”表达式的用例:

extension String {
func isEmail() -> Bool {
let regex = try! NSRegularExpression(pattern: "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$",
options: [.CaseInsensitive])

return regex.firstMatchInString(self, options:[],
range: NSMakeRange(0, utf16.count)) != nil
}
}

try! 禁用错误传播,这样该方法就不会抛出一个错误(调用者必须捕获)。它将中止如果模式无效,则运行时异常,这有助于找到早期的编程错误。

还请注意,NSRange() 会计算 NSString 的长度,即 UTF-16 代码点的数量,因此characters.count 应该是utf16.count,否则可能会崩溃例如带有表情符号字符。

关于ios - 调用可以抛出,但是没有标记 'try' 错误没有处理: NSRegularExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30845495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com