编辑代码

1
enum PrinterError: ErrorType {
    case OutOfPaper
    case NoToner
    case OnFire
}

2
func sendToPrinter(printerName: String) throws -> String {
    if printerName == "Never Has Toner" {
        throw PrinterError.NoToner
    }
    return "Job sent"
}

3
do {
    let printerResponse = try sendToPrinter("Bi Sheng")
    print(printerResponse)
}catch {
    print(error)
}

4
do {
    let printerResponse = try sendToPrinter("Gutenberg")
    print(printerResponse)
}catch PrinterError.OnFire {
    print("I'11 just put this over here, with the rest of the fire.")
}catch let printerError as PrinterError {
    print("printer error: \(printerError).")
} catch {
    print(error)
}

5
let printerSuccess = try? sendToPrinter("Mergenthaler")
let printerFailure = try? sendToPrinter("Never Has Toner")

6
var fridgeIsOpen = false
let fridgeContent = ["milk", "eggs", "leftovers"]

func fridgeContent(itemName: String) -> Bool {
    fridgeIsOpen = true
    defer {
        fridgeIsOpen = false
    }

    let result = fridgeContent.contains(itemName)
    return result
}
fridgeContains("banana")
print(fridgeIsOpen)