Swift 2.0通過拋出和捕獲ErrorType
引入了錯誤處理。 Result
通過封裝結(jié)果來實現(xiàn)相同的目標(biāo)。 Result
抽象實現(xiàn)了強大的功能,如map
和flatMap
,使用result
比throw
更加合適。
示例代碼:
typealias JSONObject = [String:AnyObject] enum JSONError : ErrorType { case NoSuchKey(String) case TypeMismatch } func stringForKey(json: JSONObject, key: String) -> Result<String, JSONError> { guard let value = json[key] else { return .Failure(.NoSuchKey(key)) } if let value = value as? String { return .Success(value) } else { return .Failure(.TypeMismatch) } }