Swift异常处理的try try?与try!

130 阅读1分钟
在调用一个函数时,如果发现该函数最后有一个 throws,表示该函数可能会抛出异常,处理方式有三种 try try? try! 这里以创建正则表达式抛出的异常为例

1.创建匹配规则


// 待处理的字符串

let str = "dafdfalkycdfdffgabcggglkygwerw"

 
// 1.创建匹配规则     找出符合此规则的字符串的位置

let pattern = "lky"

2.创建正则表达式对象

2.1 try 捕捉异常,并且进行处理


do {

  // do{}中的函数如果有异常,则执行catch中的函数

  // 如果没有异常会继续执行

  let regex = try NSRegularExpression(pattern: pattern, options: [])

  let results = regex.matchesInString(str, options: [], range: NSRange(location: 0, length: str.characters.count))

  

  for result in results {

      print((str as NSString).substringWithRange(result.range))

  }

} catch {

  print(error)

}

2.2 try? 系统会自动处理异常, 返回一个可选类型(如果有异常则返回一个 nil,如果没有异常则返回对应的值)


let regex = try? NSRegularExpression(pattern: pattern,options: [])

2.3 try! 告诉系统该函数不会有异常 直接返回值 ps:有异常则程序崩溃


let regex = try! NSRegularExpression(pattern: pattern,options: [])

3.匹配内容


//  返回一个符合规则的的数组

let results = regex.matchesInString(str, options: [], range: NSRange(location: 0, length: str.characters.count))

//  遍历取值

for result in results {

    print(result.range)

    print((str as NSString).substringWithRange(result.range))

}

4.打印结果


**(6,3)**

**lky**

**(22,3)**

**lky**