Я использую перечисление, которое наследует от Error
(или ErrorType
в Swift 2), и я пытаюсь использовать его таким образом, чтобы я мог поймать ошибку и используйте что-то вроде print(error.description)
, чтобы напечатать описание ошибки.Пытается напечатать описание ошибки (AKA ErrorType) enum
Это то, что мое перечисление ошибок выглядит следующим образом:
enum UpdateError: Error {
case NoResults
case UpdateInProgress
case NoSubredditsEnabled
case SetWallpaperError
var description: String {
switch self {
case .NoResults:
return "No results were found with the current size & aspect ratio constraints."
case .UpdateInProgress:
return "A wallpaper update was already in progress."
case .NoSubredditsEnabled:
return "No subreddits are enabled."
case .SetWallpaperError:
return "There was an error setting the wallpaper."
}
}
// One of many nested enums
enum JsonDownloadError: Error {
case TimedOut
case Offline
case Unknown
var description: String {
switch self {
case .TimedOut:
return "The request for Reddit JSON data timed out."
case .Offline:
return "The request for Reddit JSON data failed because the network is offline."
case .Unknown:
return "The request for Reddit JSON data failed for an unknown reason."
}
}
}
// ...
}
Важной вещь, следует отметить, что есть несколько вложенных перечислений в пределах UpdateError
так что-то вроде этого не будет работать, потому что вложенные перечисления не являются из UpdateError
типа сам:
do {
try functionThatThrowsUpdateError()
} catch {
NSLog((error as! UpdateError).description)
}
есть ли лучший способ печати описания ошибки без необходимости проверять каждый тип UpdateError
, которые произошли в заявлении поймать?