Co je v bloku za Try, to se kontroluje na chybu. Pokud zde dojde k chybě, spustí se blok za except. Jinak jej program přeskočí.
Nezbytné pro psaní robustních programů. Příklad viz níže.
Vhodné použít modul traceback.
V následujícím programu máme popořadě: hlavičku souboru, definici kódování souboru, docstring, import modulů, definici hlavní třídy programu, inicializaci této třídy a nakonec funkci gtk.main(), která čeká na uživatelskou odezvu.
#!/usr/bin/env python #-*- coding: utf-8 -*- """ This program demonstrates a simple Graphical User Interface. Filip Dominec, dominecf@fzu.cz """ import gtk, traceback class Main: def __init__(self): self.window1 = gtk.Window() self.hbox1 = gtk.HBox() self.window1.add(self.hbox1) self.btnText = gtk.Button("OK") self.hbox1.pack_start(self.btnText) self.ent1 = gtk.Entry() self.hbox1.pack_start(self.ent1) self.btnKonec = gtk.Button("Konec") self.hbox1.pack_start(self.btnKonec) self.window1.show_all() ## Přidání obsluhy událostí self.btnText.connect("clicked", self.on_btnText_clicked) self.btnKonec.connect("clicked", self.destroy) def destroy(self, widget, data=None): gtk.main_quit() # GUI event handlers def on_btnText_clicked(self, sender): print "Clicked" self.ent1.set_text(u"Vložený text") pass if __name__ == '__main__': # avoid execution if loaded as a module only try: MainInstance = Main() gtk.main() except: traceback.print_exc() blah = input() # enables to read the error report on volatile terminal
Předchozí kód by měl zajistit, že při jakékoli chybě v programu se skočí na funkci traceback.print_exc(), která vypíše původce chyby a pak zůstane okno otevřené, abychom to přečetli.
Může výjimečně nastat tak zásadní chyba, že se program ukončí dřív, než se vypíše traceback.print_exc(). Jednou z takových chyb je výskyt písmenek s háčky a čárkami v pythonu 2.6 na Windows.
Jako řešení by měly pomoci tyto 3 kroky:
1. pod hlavičkou souboru je řádek obsahující buďto #coding=utf8 nebo #coding=cp1250, podle toho, co používá váš editor 2. => soubor ukládáme s uvedeným kódováním (utf8 nebo cp1250), obvykle lze nastavit v textovém editoru 3. řetězce, které obsahují česká písmenka, uvozujeme písmenem u, jako třeba u"žába" (toto platí v pythonu2.6 ; v pythonu3 to není třeba)Pak by neměly nastávat obtíže s diakritikou.