Używam NSFileManager.contentsOfDirectoryAtPath
, aby uzyskać tablicę nazw plików w katalogu. Chcę korzystać z nowej składni do-try-catch
do obsługi błędów:Jak znaleźć rodzaj błędów, które metoda może wyrzucić i przechwycić w Swift
do {
let docsArray = try fileManager.contentsOfDirectoryAtPath(docsPath)
} catch {
// handle errors
print(error) // this is the best I can currently do
}
mogę imaging, że błąd może być tak, że docsPath
nie istnieje, ale nie wiem jak do połowu tego błędu. I nie wiem, jakie mogą wystąpić inne możliwe błędy.
przykład Dokumentacja
Error Handling documentation ma przykład jak ten
enum VendingMachineError: ErrorType {
case InvalidSelection
case InsufficientFunds(centsNeeded: Int)
case OutOfStock
}
i
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.")
}
ale nie wiem jak zrobić coś podobnego do łapania błędów normy Typy Swift z metodami używającymi słowa kluczowego throws
.
Urządzenie NSFileManager class reference for contentsOfDirectoryAtPath
nie określa rodzaju błędów, które mogą zostać zwrócone. Tak więc nie wiem, jakie błędy należy złapać lub jak sobie z nimi poradzić, jeśli je otrzymam.
Aktualizacja
chciałbym zrobić coś takiego:
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.")
}
Duplikat? [Jak uzyskać listę błędów zgłaszanych przez funkcję?] (Http: // stackoverflow.com/q/34877027/2415822) – JAL
@JAL, Tak, to pytanie jest podobne. W twojej odpowiedzi pokazałeś, jak uzyskać 'NSError', ale nie podałeś żadnych szczegółów na temat tego, jak rozróżniać i obsługiwać różne typy błędów. – Suragch
Również powiązane (zobacz dyskusję w komentarzach): [Znajdź błędy, które funkcja może wyrzucić w Xcode za pomocą Swift] (http://stackoverflow.com/q/36139221/2415822) Naprawdę nie ma sposobu na uzyskanie listy ' ErrorType jest wyrzucane przez funkcję. 'ErrorType' to protokół obiektów, które mogą być wyliczane przez wyrażenie (' NSError' jest zgodne z 'ErrorType', i musisz sprawdzić kod błędu, który powrócił, aby obsłużyć określone błędy). – JAL