我正在使用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")
}
这似乎意味着它无法找到我的档案。我必须检查它实际上是否已捆绑在目标中。但是,我的问题是,如何找出抛出的错误?
答案 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")}