abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 16:44 | IT novinky

    S koncem roku 2025 skončila standardní podpora operačního systému HP-UX (Hewlett Packard Unix).

    Ladislav Hagara | Komentářů: 5
    včera 14:33 | Nová verze

    K 1. lednu 2026 končí 70leté omezení majetkových autorských práv děl autorů zesnulých v roce 1955, viz 2026 in public domain. V americkém prostředí vstupují do public domain díla z roku 1930, viz Public Domain Day.

    |🇵🇸 | Komentářů: 1
    31.12. 15:00 | Nová verze

    Všem vše nejlepší do nového roku 2026.

    Ladislav Hagara | Komentářů: 10
    31.12. 13:33 | Zajímavý software

    Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.60. Vyzkoušet lze online demo.

    Ladislav Hagara | Komentářů: 0
    31.12. 12:11 | Zajímavý článek

    Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().

    Ladislav Hagara | Komentářů: 6
    31.12. 03:00 | Nová verze

    Byla vydána nová verze 25.12.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    30.12. 18:55 | IT novinky

    Společnost Valve publikovala přehled To nej roku 2025 ve službě Steam aneb ohlédnutí za nejprodávanějšími, nejhranějšími a dalšími nej hrami roku 2025.

    Ladislav Hagara | Komentářů: 0
    30.12. 16:11 | Komunita

    Byly publikovány výsledky průzkumu mezi uživateli Blenderu uskutečněného v říjnu a listopadu 2025. Zúčastnilo se více než 5000 uživatelů.

    Ladislav Hagara | Komentářů: 0
    30.12. 03:33 | Bezpečnostní upozornění

    V dokumentově orientované databázi MongoDB byla nalezena a v upstreamu již opravena kritická bezpečností chyba CVE-2025-14847 aneb MongoBleed.

    Ladislav Hagara | Komentářů: 0
    29.12. 23:11 | IT novinky

    Při úklidu na Utažské univerzitě se ve skladovacích prostorách náhodou podařilo nalézt magnetickou pásku s kopií Unixu V4. Páska byla zaslána do počítačového muzea, kde se z pásky úspěšně podařilo extrahovat data a Unix spustit. Je to patrně jediný známý dochovaný exemplář tohoto 52 let starého Unixu, prvního vůbec programovaného v jazyce C.

    NUKE GAZA! 🎆 | Komentářů: 23
    Které desktopové prostředí na Linuxu používáte?
     (0%)
     (0%)
     (0%)
     (33%)
     (67%)
     (0%)
     (0%)
     (0%)
     (0%)
     (33%)
    Celkem 3 hlasů
     Komentářů: 0
    Rozcestník

    Dotaz: PYTHON error handling

    17.5.2011 02:20 adrinko | skóre: 22
    PYTHON error handling
    Přečteno: 245×
    prosím, prečo mi tu nefunguje správne error handling? v def kazdych_5_sekund je selecta namiesto select a preto by to malo vypisať Oops. Ono to avšak nefunguje a vypíše to celý traceback. prečo? vyskúšal som, že ak by bol preklep napr v def __init__(self), tak by to správne vypísalo Oops, ale keď je preklep alebo chyba nižšie, tak to nefunguje. prečo? chcel by som, aby sa vždy vypísalo len Oops pri akejkoľvek chybe, kdekoľvek v kóde. vďaka vopred za nakopnutie

    # -*- coding: utf-8 -*-
    import sys      
    import traceback 
    
    
    try:
      import pygtk
      pygtk.require("2.0")
      import gtk
      import gobject
    
      class jednoduchy_textovy_prohlizec (Exception):
    
          def __init__(self):
       
              ## naimportovanie firebird db
              import kinterbasdb
              self.con = kinterbasdb.connect(dsn=db, user=usr, password=psw)
              self.cur = self.con.cursor()        
                
              self.okno = gtk.Window()
              self.okno.set_title("Textový editor")
              self.okno.set_border_width(10)
      
              # Editor
              self.textovy_buffer = gtk.TextBuffer()
              self.textovy_prohlizec = gtk.TextView(self.textovy_buffer)
              self.posuvnikove_okno = gtk.ScrolledWindow()
              self.posuvnikove_okno.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
              self.posuvnikove_okno.add_with_viewport(self.textovy_prohlizec)
      
              # Zabalení menu a editoru do VBoxu
              self.vbox = gtk.VBox(False, 5)
              self.vbox.pack_end(self.posuvnikove_okno)
      
              self.okno.add(self.vbox)
              self.okno.show_all()
      
              self.okno.connect("destroy", gtk.main_quit)
              
              # Tímto si vyrobíme "timer" po 5 sekundách
              # timer_id lze využít pro "vypnutí" timeru pomocí gobject.source_remove(timer_id)
              timer_id = gobject.timeout_add(1000, self.kazdych_5_sekund)
      
          def kazdych_5_sekund(self):
              SELECT = "selecta * from aaa"
              self.cur.execute(SELECT)
              for row in self.cur.itermap():
                  id = 'ID:%(ID)s' % row
                  print id
              return True     # Toto způsobí že se toto bude opakovat každých 5s, False - provede se pouze jednou
     
      if __name__ == "__main__":
          aplikace = jednoduchy_textovy_prohlizec()
          gtk.main()
    
    
    #odchytava
    except (RuntimeError, TypeError, NameError, Exception):
      print "Oops!"

    Odpovědi

    17.5.2011 08:46 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: PYTHON error handling
    Především je ve výše uvedeném kódu několik chyb.
    1) od třídy Exception dědí pouze střídy, ve kterých definuješ vlastní výjimky
    2) to jak jsi použil try ... except je řekněme chybné
    Kde odchytávat výjimky? Zde záleží na tobě, kterou část kódu považuješ za důležitou a vhodnou pro "zabezpečení".

    Návrh:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gobject
    
    class jednoduchy_textovy_prohlizec:
    
          def __init__(self):
          	# .....
     
          def kazdych_5_sekund(self):
              SELECT = "selecta * from aaa"
              try:
                  self.cur.execute(SELECT)
              except "vyjika vyvolana pri execute modulem kinterbasdb":
                  print "Oops!"
                  return False
              for row in self.cur.itermap():
                  id = 'ID:%(ID)s' % row
                  print id
              return True     # Toto způsobí že se toto bude opakovat každých 5s, False - provede se pouze jednou
     
    if __name__ == "__main__":
    	  # a pripadne odchytit ostatni vyjimky, ktere dedi od nize uvedenych. podle me je to zbytecne a spis se zamerit
              # na odchyceni konkretnich vyjimek primo ve tride nebo pri importu
    	  try:
    	  	aplikace = jednoduchy_textovy_prohlizec()
    	  	gtk.main()
    	  except (RuntimeError, TypeError, NameError, Exception):
    	  	print "Oops!"
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.