Swift异常处理与python异常

时间:2015-10-29 20:56:53

标签: python swift exception-handling

我昨天开始学习Swift来自Python和Javascript(以及学校的VB.NET),我在处理异常时遇到了一些麻烦。

在Python中,我可以这样做:

def myFunction(n):
    x = 3 / n
    return x

try:
    print(myFunction(0))
except Exception:
    print("Unexpected incident")

它按预期工作。 在斯威夫特,我尝试做同样的事情:

func myFunction(n:Int) throws -> Float {
    var a:Float
    a = 3 / n
    return a
}
do {
    try print(myFunction(0))
} catch {
    print("Unexpected incident")
}

我意识到这一定是一个非常愚蠢的问题,但我无法得到它。 我从this question读了答案,一个答案是关于do / try / catch语法(第三个),但我仍然看不出我做错了什么。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不认为除法运算符会在swift中抛出异常。 您必须在n == 0

时手动抛出异常

即:

enum NumericalExceptions: ErrorType {
  case DivideByZero
}

func myFunction(n:Int) throws -> Float {
  guard n != 0 else {
    throw NumericalExceptions.DivideByZero
  }
  return 3 / Float(n)
}
do {
  try print(myFunction(0))
} catch {
  print("Unexpected incident")
}