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í
×
    dnes 01:55 | IT novinky

    Nejvyšší správní soud (NSS) podruhé zrušil pokutu za únik zákaznických údajů z e-shopu Mall.cz. Incidentem se musí znovu zabývat Úřad pro ochranu osobních údajů (ÚOOÚ). Samotný únik ještě neznamená, že správce dat porušil svou povinnost zajistit jejich bezpečnost, plyne z rozsudku dočasně zpřístupněného na úřední desce. Úřad musí vždy posoudit, zda byla přijatá opatření přiměřená povaze rizik, stavu techniky a nákladům.

    Ladislav Hagara | Komentářů: 0
    včera 18:44 | Komunita

    Organizace Free Software Foundation Europe (FSFE) zrušila svůj účet na 𝕏 (Twitter) s odůvodněním: "To, co mělo být původně místem pro dialog a výměnu informací, se proměnilo v centralizovanou arénu nepřátelství, dezinformací a ziskem motivovaného řízení, což je daleko od ideálů svobody, za nimiž stojíme". FSFE je aktivní na Mastodonu.

    Ladislav Hagara | Komentářů: 12
    včera 17:55 | IT novinky

    Paramount nabízí za celý Warner Bros. Discovery 30 USD na akcii, tj. celkově o 18 miliard USD více než nabízí Netflix. V hotovosti.

    Ladislav Hagara | Komentářů: 3
    včera 13:22 | IT novinky

    Nájemný botnet Aisuru prolomil další "rekord". DDoS útok na Cloudflare dosáhl 29,7 Tbps. Aisuru je tvořený až čtyřmi miliony kompromitovaných zařízení.

    Ladislav Hagara | Komentářů: 4
    včera 12:11 | Nová verze

    Iced, tj. multiplatformní GUI knihovna pro Rust, byla vydána ve verzi 0.14.0.

    Ladislav Hagara | Komentářů: 2
    včera 05:22 | Komunita

    FEX, tj. open source emulátor umožňující spouštět aplikace pro x86 a x86_64 na architektuře ARM64, byl vydán ve verzi 2512. Před pár dny FEX oslavil sedmé narozeniny. Hlavní vývojář FEXu Ryan Houdek v oznámení poděkoval společnosti Valve za podporu. Pierre-Loup Griffais z Valve, jeden z architektů stojících za SteamOS a Steam Deckem, v rozhovoru pro The Verge potvrdil, že FEX je od svého vzniku sponzorován společností Valve.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Nová verze

    Byla vydána nová verze 2.24 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    7.12. 15:11 | IT novinky

    Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia online tabulky Proton Sheets v Proton Drive.

    Ladislav Hagara | Komentářů: 6
    6.12. 15:55 | Komunita

    O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.

    Ladislav Hagara | Komentářů: 1
    6.12. 15:44 | Komunita

    Provozovatel internetové encyklopedie Wikipedia jedná s velkými technologickými firmami o uzavření dohod podobných té, kterou má s Googlem. Snaží se tak zpeněžit rostoucí závislost firem zabývajících se umělou inteligencí (AI) na svém obsahu. Firmy využívají volně dostupná data z Wikipedie k trénování jazykových modelů, což zvyšuje náklady, které musí nezisková organizace provozující Wikipedii sama nést. Automatické programy

    … více »
    Ladislav Hagara | Komentářů: 31
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (48%)
     (19%)
     (17%)
     (22%)
     (15%)
     (24%)
     (16%)
     (18%)
    Celkem 444 hlasů
     Komentářů: 18, poslední 2.12. 18:34
    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.