昨天我开始学习来自Python和Javascript(以及学校的VB.NET)的Swift,在异常处理方面遇到了一些问题。
在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语法(第三个),但我仍然看不出我做错了什么。
任何帮助都将不胜感激。

最佳答案

我不认为部门操作员在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")
}

关于python - Swift异常处理与python异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33424447/

10-12 12:24
查看更多