Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502

    [Python-Java] finally

    Ho un pò di dubbi su questo benedetto finally:
    1) Venendo dal java, mi viene naturale ragionare in javese, e mi chiedo se ci sono differenze fra i 2 finally o sono assolutamente identici
    2) Perchè su varie guide leggo che o si utilizzano i blocchi exception o il solo blocco finally, ma mai insieme, quando poi andando a provare, non ho (apparentemente) riscontrato problemi?
    3) Ma con un pò di accortezza non è possibile programmare eliminando il finally?Mi spiego con un esempio

    codice:
    try:
       apro un file
       bla bla bla
    finally:
       chiudo il file
    uguale a:
    codice:
    try:
       apro un file
       bla bla bla
    catch:
       bla bla bla
    chiudo il file // tanto qui ci arrivo sia se ci sono eccezioni sia che non ce ne sono

  2. #2
    1) Venendo dal java, mi viene naturale ragionare in javese, e mi chiedo se ci sono differenze fra i 2 finally o sono assolutamente identici
    Non conoscendo Java non saprei cosa dire.

    2) Perchè su varie guide leggo che o si utilizzano i blocchi exception o il solo blocco finally, ma mai insieme, quando poi andando a provare, non ho (apparentemente) riscontrato problemi?
    Infatti non è vero che non si può. Probabilmente ti stai confondendo.
    Il concetto del finally è molto semplice: all'interno del blocco try/except quello che sta sotto finally viene eseguito sempre, sia che venga sollevata un'eccezione o meno.
    Esempio, qui verrà stampato "eccezione" e "finally":

    codice:
    try:
         raise
    except:
         print "eccezione"
    finally:
         print "finally"
    Qui solo "finally".

    codice:
    try:
         pass
    except:
         print "eccezione"
    finally:
         print "finally"
    E qui di nuovo solo "finally".

    codice:
    try:
         pass
    except:
         raise
    finally:
         print "finally"


    La differenza col codice che hai postato:

    codice:
    try:
       apro un file
       bla bla bla
    catch:
       bla bla bla
    chiudo il file // tanto qui ci arrivo sia se ci sono eccezioni sia che non ce ne sono
    E' che se "bla bla" solleva eccezione "chiudo il file" non verrà mai eseguito (vedi "non ci arriverai mai").
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  3. #3
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da billiejoex
    La differenza col codice che hai postato:

    codice:
    try:
       apro un file
       bla bla bla
    catch:
       bla bla bla
    chiudo il file // tanto qui ci arrivo sia se ci sono eccezioni sia che non ce ne sono
    E' che se "bla bla" solleva eccezione "chiudo il file" non verrà mai eseguito (vedi "non ci arriverai mai").
    Mi torna tutto quello che hai detto, tranne l'ultima parte: se io gestisco le mie possibili eccezioni con il catch, ci arrivo su chiudo il file. Perchè non dovrebbe essere eseguito?

  4. #4
    Si ma se quello che sta sotto "catch" ("except" in pythonese) solleva eccezione il file non sarà mai chiuso.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  5. #5
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da billiejoex
    Si ma se quello che sta sotto "catch" ("except" in pythonese) solleva eccezione il file non sarà mai chiuso.

    ops, mi è scappato un catch
    capito. Ok, mi hai convinto della sua necessità, lo vedevo solo come zucchero sintattico, aimè anche in java

    grazie

  6. #6
    No, serve, serve.
    Se capisci anche questo direi che l'argomento lo puoi considerare chiuso:

    codice:
    try:
        ...
    except tipo_eccezione, err:
        ...
    except altro_tipo, err
        ...
    except:
        ...
    else:
        ...
    finally:
       ...
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  7. #7
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da billiejoex
    No, serve, serve.
    Se capisci anche questo direi che l'argomento lo puoi considerare chiuso:

    codice:
    try:
        ...
    except tipo_eccezione, err:
        ...
    except altro_tipo, err
        ...
    except:
        ...
    else:
        ...
    finally:
       ...
    mi sembra abbastanza ragionevole

  8. #8
    In che senso ragionevole?
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  9. #9
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da billiejoex
    In che senso ragionevole?

    nel senso che è la stessa cosa solitamente avrei fatto (ad eccezione del finally fino ad un'ora fa )

  10. #10
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Un'ultima domanda, un pò OT.Purtroppo paragono tutto ancora con il java, e anche se devo ammettere che questo linguaggio lo sto trovando più interessante e malleabile del java, c'è una cosa di cui sento la mancanza: la javadoc!!!Esiste una pythondoc un man simile a quello del c, o qualcosa del genere? Ho trovato la funzione help(), ma spiega ben poco sulle funzioni dei moduli. Mi serve qualche documentazione tecnica che spieghi per filo e per segno le varie funzioni, ovvero cosa fanno, cosa prendono in pasto, cosa sputano fuori e che tipi di eccezioni possono lanciare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.