<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">Il giorno mar 11 lug 2017 alle ore 15:12 Marco Beri <<a href="mailto:marcoberi@gmail.com">marcoberi@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Ma a che pro avere nell'iterabile due classi di eccezioni, una che dipende dall'altra? Alla fine non ti basta quella più generica? Cosa mi sfugge?</div><div><br></div><div><br></div><div>Piuttosto è possibile fare questo:</div><div><br></div><div>try:<br>    qualcosa()<br></div><div><div>except KeyError as exc:<br>    ommamma1()<br></div></div><div><div>except KeyError as exc:<br>    ommamma2()<br></div></div><div><br></div><div><br></div></div></div></div></blockquote><div>Supponi di avere una libreria che su un metodo può sollevare differenti eccezioni diverse e per entrambe devi effettuare la stessa azione. Invece di sciorinare più blocchi "except:" con lo stesso codice, le accorpi.</div><div><br></div><div>Relativamente all'usare quella più generica, potrebbe essere troppo generica e ti fa gestire eccezioni che non vorresti prendere.</div><div>Esempio: se devi trappare IndexError e KeyError, ok puoi usare LookupError; ma se vuoi IndexError e TypeError, il parente più prossimo ad entrambe è "Exception" generica, ma non vuoi usarla altrimenti l'except "assorbe" tutte le eccezioni.</div></div></div>