[Python] Strana eccezione
~redShadow~
redshadow a hackzine.org
Mar 6 Maggio 2014 14:16:20 CEST
On 05/06/2014 10:28 AM, piergiorgio pancino wrote:
> if __name__ == '__main__':
> try:
> csv_rapportino=ftp_connection.ftp_importazione()
> db=SQLServer_connection.DB_connection().connect()
>
> ...
>
> except:
> sys.exit()
>
> finally:
> csv_rapportino.__exit__()
> db.__exit__()
Dal (poco) codice che hai postato sembra che i due oggetti
ftp_connection e SQLServer_connection vadano usati cosí:
if __name__ == '__main__':
with (ftp_connection.ftp_importazione() as csv_rapportino,
SQLServer_connection.DB_connection().connect() as db):
# resto del codice nel "try:" originale qui
Questo perché:
- lo statement "with" si occupa di chiamare __exit__() all'uscita dal
blocco, indipendentemente dal fatto che si sia verificata un'eccezione
nel mezzo o meno
(https://docs.python.org/2/reference/compound_stmts.html#the-with-statement)
- sempre "with" si occupa anche di chiamare __enter__() all'entrata del
blocco (non conosoco le classi che stai usando, ma é anche possibile che
la connessione venga effettuata lí..)
- non nascondere le eccezioni quando non serve: quell'``except:
sys.exit()`` é completamente inutile (in caso di eccezione non gestita,
l'interprete sa che deve terminare l'esecuzione con codice di errore)
peró maschera un traceback potenzialmente utile per capire cosa é andato
storto..
--
Samuele ~redShadow~ Santi
----------------------------------------------------------------------
----( Contact information )----
E-MAIL: redshadow a hackzine.org
BLOG: http://www.hackzine.org
WIKI: http://wiki.hackzine.org
TWITTER: https://twitter.com/_rshk
GITHUB: https://github.com/rshk
----( GPG Key: 09F09951 )----
1AFC FAE5 CA4B 3FB0 F300 FA64 3CB0 1008 09F0 9951
----( Registered Linux-User: #440008 )----
DEBIAN User since 2004 (I even used Sid!)
GENTOO User since 2008-01-01
----------------------------------------------------------------------
Think about the environment: for each top-posted, badly quoted
or bulk e-mail I receive, I'm going to cut down a tree.
Maggiori informazioni sulla lista
Python