2016. 8. 7. 16:41ㆍSwift
protocol Error: ErrorType {
}
enum PrinterError: Error {
case outOfPager
case noToner
case onFire
}
func send(job: Int, toPrinter printName: String) throws -> String {
if printName == "Never Has Toner" {
//if printName == "Bi Sheng" {
throw PrinterError.noToner
} else if printName == "Gutenberg" {
throw PrinterError.onFire
} else if printName == "Mokminsimseo" {
throw PrinterError.outOfPager
}
return "Job sent"
}
do {
let printerRespponse = try send(1040, toPrinter: "Bi Sheng")
print(printerRespponse)
} catch {
print(error)
}
do {
//let printerRespponse = try send(1440, toPrinter: "Gutenberg")
let printerRespponse = try send(1440, toPrinter: "Mokminsimseo")
print(printerRespponse)
} catch PrinterError.onFire {
print("I'll just put this over here, with hte rest of the fire.")
} catch let printerError as PrinterError {
print("Printer error: \(printerError).")
} catch {
print(error)
}
let printerSuccess = try? send(1884, toPrinter: "Mergenthaler")
let printerFailure = try? send(1885, toPrinter: "Never Has Toner") // throw 했는데 catch가 없어서 nil
var fridgeIsOpen: Bool = false
let fridgeContent = ["milk", "eggs", "leftovers"]
// defer
func fridgeContains(food: String) -> Bool {
fridgeIsOpen = true
defer {
fridgeIsOpen = false
}
let result = fridgeContent.contains(food)
return result
}
fridgeContains("milk")
print(fridgeIsOpen)
출처 : The Swift Programming Language(iBook)