Exception handling 如何查找SWIFT 3中的基础方法抛出的异常? 是否有一种方法可以找到SWIFT 3中基础方法抛出的异常?特别是,我使用FileManager类将文件从应用程序包复制到文档目录。如果目标文件存在,copyItem方法抛出异常。如何捕获特定的异常?我发现的唯

Exception handling 如何查找SWIFT 3中的基础方法抛出的异常? 是否有一种方法可以找到SWIFT 3中基础方法抛出的异常?特别是,我使用FileManager类将文件从应用程序包复制到文档目录。如果目标文件存在,copyItem方法抛出异常。如何捕获特定的异常?我发现的唯,exception-handling,swift3,Exception Handling,Swift3,如何查找SWIFT 3中的基础方法抛出的异常? 是否有一种方法可以找到SWIFT 3中基础方法抛出的异常?特别是,我使用FileManager类将文件从应用程序包复制到文档目录。如果目标文件存在,copyItem方法抛出异常。如何捕获特定的异常?我发现的唯一方法是解析localizedDescription,它很难看,而且可能不健壮: func copySampleReport() { let fileManager = FileManager() let reportName

如何查找SWIFT 3中的基础方法抛出的异常?

是否有一种方法可以找到SWIFT 3中基础方法抛出的异常?特别是,我使用

FileManager
类将文件从应用程序包复制到文档目录。如果目标文件存在,
copyItem
方法抛出异常。如何捕获特定的异常?我发现的唯一方法是解析
localizedDescription
,它很难看,而且可能不健壮:

func copySampleReport() {
    let fileManager = FileManager()
    let reportName = "MyFile.txt"
    if let documentUrl = try? fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false), let reportUrl = Bundle.main.url(forResource: URL(fileURLWithPath: reportName).deletingPathExtension().lastPathComponent, withExtension: URL(fileURLWithPath: reportName).pathExtension) {
        debugPrint("Copying \(reportUrl) to \(documentUrl)")
        do {
            try fileManager.copyItem(at: reportUrl, to: documentUrl.appendingPathComponent(reportName))
            debugPrint("File copied succesfully!")
        }
        catch {
            if error.localizedDescription.range(of:"exists") != nil {
                debugPrint("File exists at destination")
            } else {
                debugPrint(error.localizedDescription)
            }
        }
    }
}
另外,苹果的文档也有一个例子,说明如何使用<代码> CuaAcError < /Cord> Stutt在基础中隔离特定的错误。请参阅“捕获和处理错误”一节。