我正在使用 Swift 的String
。这里的参考资料说它"抛出"。
所以我得到了:
do {
let path = Bundle.main.path(forResource: "mydata", ofType: "json")
let json = try String(contentsOfFile: path!,
encoding: String.Encoding.utf8)
} catch {
print ("error")
}
这似乎意味着它找不到我的文件。我必须检查它是否真的被捆绑在目标中。但是,我的问题是,我如何找出抛出的错误?
您可以使用泛型 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)
}
您可以在捕获块中获得免费error
。只需打印该变量,例如:
catch {
print ("error: (error)")
}
为如下错误创建一个枚举:
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")}