Swift 如何找出catch块中的确切错误

Swift 如何找出catch块中的确切错误,swift,Swift,我有一种敏捷的美: do { let path = "/Users/ADMIN/Desktop/hello.txt" let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) print(str) } catch { print("shit happens") } 当然,我收到了错误消息,因为有一个错误。我怎样才能找出错误是什么?(是,文件存在) 感谢制作捕获为您创

我有一种敏捷的美:

do {
    let path = "/Users/ADMIN/Desktop/hello.txt"
    let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)

    print(str)
} catch {
    print("shit happens")
}
当然,我收到了错误消息,因为有一个错误。我怎样才能找出错误是什么?(是,文件存在)


感谢

制作
捕获
为您创建一个与NSError兼容的“错误”常量:

do {
    let path = "/Users/ADMIN/Desktop/hello.txt"
    let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)
    print(str)
} catch let error as NSError {
    print(error.localizedDescription)
}
您也可以只使用
catch
,它会自动创建一个“error”常量:

do {
    let path = "/Users/ADMIN/Desktop/hello.txt"
    let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)
    print(str)
} catch {
    print(error)
}

密切相关:(可能重复,在本例中我不确定;链接线程不包含使用Eric D.:s
NSError.localizedDescription
以下方法的答案)。@dfri我花了5分钟的时间试图找到一个好的重复。不管怎样,我已经决定回答,也许我以后能接近一个好目标…@Eric。我们在过去30分钟左右讨论的两个副本都是我作为回答者参与的,因此我很容易找到这些副本,所以这不是一个公平的比较:)没有这些,我发现很难找到一些问题的副本(希望那些真正参与这些副本的人稍后会发现:))。我不知道关于
n错误。本地化描述
,所以我认为你下面的回答会带来额外的价值,也许以后重复链接是合适的,但现在我说让我们离开它。谢谢!我发现这一简单的事实并没有在苹果的Swift书的错误处理部分中被提及,这确实令人沮丧。