Należy jeszcze wspomnieć o opcjonalnym bloku else, który zostaje wykonany tylko, gdy w powiązanym bloku try nie wystąpił wyjątek tzn.
- jeśli blok else występuje to musi być umieszczony po blokach except
- może być tylko jeden blok else (lub wcale)
Blok else używamy jeśli nie chcemy aby pewien fragment kodu był zawarty w bloku try. Gdyby cały kod umieścić zamiast tego w bloku try, to przyczyna wywołania wyjątku byłaby potencjalnie trudniejsza do zlokalizowania.
Kolejnym opcjonalnym blokiem jest blok finally, który zostaje wykonany niezależnie od tego, czy wystąpił wyjątek, czy nie:
- jeśli blok finally występuje, to musi być umieszczony po blokach except (i else – jeśli ten występuje)
- może być tylko jeden blok finally (lub wcale)
Blok finally używa się głównie do czynności porządkowych np. do zwalniania dostępu do zewnętrznych zasobów.