bunları yakalamak için bir tür hatalar nasıl bulunur Bir dizinde dosya adları dizisi almak için NSFileManager.contentsOfDirectoryAtPath
kullanıyorum. Hataları işlemek için yeni do-try-catch
sözdizimi kullanmak istiyorum:Bir yöntem atlamak ve Swift
do {
let docsArray = try fileManager.contentsOfDirectoryAtPath(docsPath)
} catch {
// handle errors
print(error) // this is the best I can currently do
}
bir hata docsPath
var olmadığını olabileceğini görüntüleme, ancak bu hatayı yakalamak için nasıl bilmiyorum. Ve diğer olası hataların neler olabileceğini bilmiyorum.
Belgeler örneği
Error Handling documentation bu
enum VendingMachineError: ErrorType {
case InvalidSelection
case InsufficientFunds(centsNeeded: Int)
case OutOfStock
}
ve
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.")
}
gibi bir örnek var ama ben standardın hatalarını yakalamak için benzer bir şey yapmak nasıl bilmiyorum throws
anahtar sözcüğünü kullanarak yöntemleri olan hızlı türler.
NSFileManager class reference for contentsOfDirectoryAtPath
, ne tür hataların döndürüleceğini söylemez. Yani onları yakalarsam hangi hataların yakalanacağını veya nasıl ele alınacağını bilmiyorum.
Güncelleme
ben böyle bir şey yapmak istiyorum:
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.")
}
Çoğalt? [Bir işlev tarafından atılan hataların listesi nasıl alınır?] (Http: // stackoverflow.com/q/34877027/2415822) – JAL
@JAL, Evet, bu soru benzer. Cevabınızda, “NSError” un nasıl elde edileceğini gösterdiniz, ancak farklı hata türlerini nasıl ayırt edeceğiniz ve ele alacağınız hakkında hiçbir ayrıntı vermediniz. – Suragch
Ayrıca ilgili (yorumlarda tartışmaya bakın): [Xcode'ta Swift ile bir fonksiyonun hangi hataları attığını bulun] (http://stackoverflow.com/q/36139221/2415822) Bir listeyi almanın gerçekten hiçbir yolu yoktur. ErrorType bir işlev tarafından atılır. 'ErrorType', bir enumların uyumlu hale gelmesini sağlayan bir protokoldür (' NSError' 'ErrorType' ile uyumludur ve belirli hataların üstesinden gelmek için döndürülen hata kodunu kontrol etmeniz gerekir). – JAL