Я использую NSFileManager.contentsOfDirectoryAtPath
, чтобы получить массив имен файлов в каталоге. Я хочу использовать новый синтаксис do-try-catch
для обработки ошибок:
do {
let docsArray = try fileManager.contentsOfDirectoryAtPath(docsPath)
} catch {
// handle errors
print(error) // this is the best I can currently do
}
Я могу представить, что ошибка может заключаться в том, что docsPath
не существует, но я не знаю, как поймать эту ошибку. И я не знаю, какие могут быть другие возможные ошибки.
Пример документации
Документация по обработке ошибок имеет пример, подобный этому
enum VendingMachineError: ErrorType {
case InvalidSelection
case InsufficientFunds(centsNeeded: Int)
case OutOfStock
}
и
do {
try vend(itemNamed: "Candy Bar")
// Enjoy delicious snack
} catch VendingMachineError.InvalidSelection {
print("Invalid Selection.")
} catch VendingMachineError.OutOfStock {
print("Out of Stock.")
} catch VendingMachineError.InsufficientFunds(let amountNeeded) {
print("Insufficient funds. Please insert an additional \(amountNeeded) cents.")
}
но я не знаю, как сделать что-то подобное, чтобы поймать ошибки стандартных типов Swift, которые имеют методы с использованием ключевого слова throws
.
Ссылка NSFileManager для contentsOfDirectoryAtPath
не говорит о том, какие ошибки могут быть возвращены. Поэтому я не знаю, какие ошибки поймать или как их обработать, если я их получу.
Update
Я хотел бы сделать что-то вроде этого:
do {
let docsArray = try fileManager.contentsOfDirectoryAtPath(docsPath)
} catch FileManagerError.PathNotFound {
print("The path you selected does not exist.")
} catch FileManagerError.PermissionDenied {
print("You do not have permission to access this directory.")
} catch ErrorType {
print("An error occured.")
}