<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2015-07-10 21:27 GMT+02:00 Carlos Catucci <span dir="ltr"><<a href="mailto:carlos.catucci@gmail.com" target="_blank">carlos.catucci@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span class=""><div class="gmail_extra"><br><div class="gmail_quote">2015-07-10 20:21 GMT+02:00 Davide Muzzarelli <span dir="ltr"><<a href="mailto:d.muzzarelli@dav-muz.net" target="_blank">d.muzzarelli@dav-muz.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="overflow:hidden">In questo esempio, il file verrebbe chiuso correttamente anche nel caso in cui f.Write() restituisse un errore:<br>
<br>
f, _ := os.Open("nome del file")<br>
defer f.Close()<br>
n, err := f.Write("foobar")<br>
if err != nil {<br>
return "Errore, spazio su disco esaurito"<br>
}<br>
</div></blockquote></div><br></div></span><div class="gmail_extra">Scusa solo per capire, dov'e' la differenza con try except?</div></div></blockquote><div><br></div><div>Che try/except aggiungono un ulteriore livello di nidificazione che rende la lettura del codice meno lineare.</div><div><br></div><div>Ad esempio:</div><div><br></div><div>try:</div><div> makedirs(path) </div><div>except OSError, err</div><div> if err.errno == errno.EEXISTS:</div><div> return</div><div><br></div><div> raise</div><div><br></div><div>Il maggiore problema con le eccezione è semplicemente che tu *non puoi sapere* se e quale eccezione può lanciare una funzione.</div><div>In C++ e Java ci hanno provato [1], ma non funziona.</div><div><br></div><div>In Go lo sai semplicemente vedendo cosa restituisce la funzione.</div><div><br></div><div><br></div><div>> [...]</div><div></div></div><br></div><div class="gmail_extra">[1] <a href="https://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions">https://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions</a></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Ciao Manlio</div></div>