Dlaczego tak
Wywołanie int("12a") zgłasza wyjątek ValueError, bo napis nie jest poprawną liczbą, więc reszta bloku try — w tym print("A") — zostaje pominięta i sterowanie przechodzi do pasującego bloku except, który wypisuje B. Blok finally wykonuje się zawsze, niezależnie od tego, czy wyjątek wystąpił, więc na końcu pojawia się C. Odpowiedź tylko z B pomija właśnie gwarancję wykonania bloku finally.