🍁
Swift: 即席でErrorをthrowする
足跡でError
をthrow
したくなった時のメモ
1.Frameworkに既存のErrorがあれば使う
import Foundation
func some() throws {
throw CocoaError(.featureUnsupported)
}
のように返せるので簡単です。
サッと調べたもの。
Framework | Error Type |
---|---|
AVFoundation | AVError |
FileProvider | NSFileProviderError |
Foundation | CocoaError URLError |
LocalAuthentication | LAError |
PassKit | PKPassKitError PKPaymentError |
SafetyKit | SAError |
ShazamKit | SHError |
SystemExtensions | OSSystemExtensionError |
UIKit | UIPrintError UISceneError |
UserNotifications | UNError |
VideoSubscriberAccount | VSError |
Virtualization | VZError |
Apple DeveloperのページでerrorDomain
やCode
と検索すれば存在の調査可能です。
2.Swiftに標準である既存のErrorを使う
- CancellationError
- DecodingError
- EncodingError
- Never
など
3.StringをErrorに準拠させる
パターン1
extension String: Error {}
パターン2
extension String: LocalizedError {
public var errorDescription: String? { self }
}
4.普通にエラーを定義する
パターン1
enum SomeError: Error {
case unknown
}
パターン2
struct SomeError: LocalizedError {
var errorDescription: String? = "unknown error"
}
パターン3
struct SomeError: Error & CustomStringConvertible {
let description: String = "unknown error"
}
Discussion