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

iOS Swift 2.1-使用Try-Catch进行错误处理,ios,swift,Ios,Swift,我正在尝试使用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 {

我正在尝试使用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块中,而不是崩溃


我可以知道这个问题的解决办法吗。任何人都可以在这方面做一些必要的工作吗?你唯一能做的就是抛出一个错误(正如Eric D.在评论中指出的):

操场:

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()
enum ArrayError:ErrorType{
边界外的情况
}
上课{
变量测试:NSArray!=[“Test1”、“Test2”]
func testCode(){
做{
尝试测试(3)
}捕捉错误{
print(“error=\(error)”//对于索引3,这将打印“error=OutOfBounds\n”
}
}
func测试(索引:Int)抛出->字符串{
防护指数
唯一可行的方法是抛出一个错误(正如Eric D.在评论中指出的):

操场:

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()
enum ArrayError:ErrorType{
边界外的情况
}
上课{
变量测试:NSArray!=[“Test1”、“Test2”]
func testCode(){
做{
尝试测试(3)
}捕捉错误{
print(“error=\(error)”//对于索引3,这将打印“error=OutOfBounds\n”
}
}
func测试(索引:Int)抛出->字符串{
防护指数
Do-Try-Catch系统只捕获错误,不捕获异常。Do-Try-Catch系统只捕获错误,不捕获异常。