Program berhenti begitu menemui error yang tidak ditangani. try dan except membuat program tetap berjalan: baris di dalam try dijalankan seperti biasa, dan bila salah satunya menimbulkan error, Python melompat ke blok except yang cocok. Jenis error ditulis setelah kata except supaya yang tertangkap hanya kesalahan yang memang diperkirakan.
def ke_bilangan(teks):
try:
return int(teks)
except ValueError:
return None
print(ke_bilangan("40")) # 40
print(ke_bilangan("empat")) # NoneJenis error yang sering muncul saat mengolah data: ValueError ketika teks tidak bisa diubah menjadi angka, ZeroDivisionError ketika pembaginya nol, KeyError ketika kunci dict tidak ada, dan IndexError ketika nomor urut list melewati isinya. Menangkap semua error sekaligus dengan except tanpa jenis akan ikut menyembunyikan salah ketik nama variabel, jadi jenisnya ditulis satu per satu.
Satu blok try boleh diikuti beberapa blok except dengan jenis error yang berbeda, dan Python menjalankan blok pertama yang jenisnya cocok. Pembagian dengan nol menimbulkan ZeroDivisionError, sedangkan menghitung nilai yang tipenya tidak cocok, misalnya teks dibagi angka, menimbulkan TypeError. Memisahkan keduanya membuat pesan yang dikembalikan program menyebut penyebabnya, bukan sekadar menyatakan gagal.