Else and Finally Timing

Both calls below run through the same validate function.

def validate(payload):
    try:
        print("checking payload")
        if not payload.get("email"):
            raise ValueError("missing email")
    except ValueError as e:
        print(f"rejected: {e}")
    else:
        print("payload accepted")
    finally:
        print("validation done")

validate({"email": "a@b.com"})
validate({})

What does this print, in order?

A
checking payload
validation done
payload accepted
checking payload
rejected: missing email
validation done
B
checking payload
payload accepted
validation done
checking payload
rejected: missing email
validation done
C
checking payload
payload accepted
validation done
checking payload
rejected: missing email
payload accepted
validation done
D
checking payload
payload accepted
validation done
checking payload
rejected: missing email