Swift 3 - 抛出什么错误?

时间:2017-06-12 03:49:50

标签: ios swift swift3

我正在使用Swift的String。引用here表示它"抛出"。

所以我得到了:

do {

    let path = Bundle.main.path(forResource: "mydata", ofType: "json")
    let json = try String(contentsOfFile: path!,
                          encoding: String.Encoding.utf8)

} catch {

    print ("error")

}

这似乎意味着它无法找到我的档案。我必须检查它实际上是否已捆绑在目标中。但是,我的问题是,如何找出抛出的错误?

3 个答案:

答案 0 :(得分:2)

您可以使用通用的Error类来捕获它。

do {

    let path = Bundle.main.path(forResource: "mydata", ofType: "json")
    let json = try String(contentsOfFile: path!,
                          encoding: String.Encoding.utf8)

} catch {
  print(error.localizedDescription)
}

答案 1 :(得分:2)

你的catch区域里有一个免费的error。只需打印该变量,如:

catch {
    print ("error: \(error)")
}

答案 2 :(得分:-1)

为这样的错误创建一个枚举:

enum calcErrr:Error {
    case notfound
    case readOnly
}


func readJson() throws -> () {
    if let bundlePath = Bundle.main.path(forResource: "mydata", ofType: "json"),
        let bundle = Bundle(path: bundlePath),
        let path = bundle.path(forResource: "...", ofType: nil) {
        print(path)
    } else {
        throw calcErrr.notfound
    }
}

do {
     try readJson()
}

catch calcErrr.notfound{ print ("Not Found")}