Отложенный блок не выполняется

У меня есть следующий быстрый код, выполняющийся на детской площадке:

func A() {
    print ("Hello")
    guard 1 == 2 else {
        return
    }
    defer {
        print ("World")
    }
}

A()

Я ожидал увидеть

Hello
World

Вместо этого толькоHello печатается. Почему это? Что мне не хватает?

Вот лучший пример:

enum MyError: ErrorType {
    case TriggerDefer
}

func throwsMyError() throws {
    let myzero = Int(arc4random_uniform(1))

    guard myzero > 1 else {
        throw MyError.TriggerDefer
    }
}

func A() throws {
    try throwsMyError()

    defer {
        print ("Hello World")
    }
}
Согласно ответам и комментариям, правильный способ сделать это (с примером)
enum MyError: ErrorType {
    case TriggerDefer
}

func throwsMyError() throws {
    let myzero = Int(arc4random_uniform(1))

    print("Hello")

    guard myzero > 1 else {
        throw MyError.TriggerDefer
    }
}

func A() throws {        
    defer {
        print ("World")
    }

    try throwsMyError()
}

Выход теперь будет

Hello
World

Ответы на вопрос(2)

Ваш ответ на вопрос