iOS Swift 2.1 - 使用 Try Catch 处理错误

Posted

技术标签:

【中文标题】iOS Swift 2.1 - 使用 Try Catch 处理错误【英文标题】:iOS Swift 2.1 - Error Handling using Try Catch 【发布时间】:2016-03-11 12:18:58 【问题描述】:

我正在尝试使用 swift 2.1 进行错误处理,

以下场景,

var test: NSArray! = ["Test1", "Test2"]

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    do
        try testing()
     catch 
        print("error")
    



func testing() throws 

    print(test.objectAtIndex(7))

在上述情况下,我的应用程序崩溃并说以 NSException 类型的未捕获异常终止,但我希望控件应该位于 Catch 块内而不是崩溃。

我想知道解决办法吗?任何人都可以在这方面做必要的事情

【问题讨论】:

Do-Try-Catch 系统只捕捉错误,不捕捉异常 【参考方案1】:

使这项工作发挥作用的唯一方法是抛出错误(正如 Eric D. 在 cmets 中指出的那样):

游乐场:

enum ArrayError : ErrorType
  case OutOfBounds


class SomeClass 

  var test: NSArray! = ["Test1", "Test2"]

  func testCode() 

    do
      try testing(3)
     catch let error
      print("error = \(error)") // for index 3 this would print "error = OutOfBounds\n"
    

  

  func testing(index: Int) throws -> String 

    guard index < test.count else
      throw ArrayError.OutOfBounds
    

    return test[index] as! String
  



let sC = SomeClass()
sC.testCode()

【讨论】:

以上是关于iOS Swift 2.1 - 使用 Try Catch 处理错误的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 使用 Parse SDK 登录(iOS 9、Xcode 7.1、Swift 2.1)

swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1直接使用字符串通过评估Java脚本(来自:)

多种协议的 Swift 类一致性(XCode 7、iOS 9、Swift 2.1)

Braintree node.js w/iOS 9 Swift 2.1 - 客户端令牌错误

ios swift 2.1 - 无法发送带有正文的补丁请求

swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1 UIWebViewDelegate