如何在Swift中使用try-catch?

时间:2016-06-15 12:01:47

标签: swift try-catch

我了解如何创建自己的错误并使用throws关键字在Swift中触发它们。我没有得到的是如何复制其他语言(或Ruby try - catch)中的常规rescue来处理未处理的异常。

示例(在Swift中):

func divideStuff(a: Int, by: Int) -> Int {
  return a / by
}

let num = divideStuff(4, by: 0)  //divide by 0 exception

以下是我在C#中处理它的方式,例如:

int DivideStuff(int a, int b) {
  int result;
  try {
    result = a / b;  
  }
  catch {
    result = 0;
  }
  return result;
}

如何使用Swift实现相同的目标?

2 个答案:

答案 0 :(得分:2)

您也可以这样处理:

enum MyErrors: ErrorType {
  case DivisionByZero
}

func divideStuff(a: Int, by: Int) throws -> Int {
  if by == 0 {
    throw MyErrors.DivisionByZero
  }
  return a / by
}

let result: Int

do {
  result = try divideStuff(10, by: 0)
} catch {
  // ...
}

答案 1 :(得分:1)

在Swift中,没有捕获任意运行时错误的功能 开发人员负责正确处理错误。

例如

func divideStuff(a : Int, b : Int) -> Int {
  if b == 0 { return 0 }
  return a / b
}