2015-03-01 14:40 GMT+00:00 Manlio Perillo <manlio.peri...@gmail.com>:
Pensa a panic come una eccezione hardware, tipo SIGSEGV. > Non รจ una situazione da cui puoi effettuare un ricovero "normale". > Ma si, questo mi e' chiaro. Non e' un segreto in Go. Anche se... per esempio se accedo fuori bound ad un array mi prendo un panic. Ora... alcune volte accedere a memoria a caso e' appunto un errore hardware. Altre volte e' solo un errore dal punto di vista del linguaggio, non dell'hardware. Quello che intendo, e' che se in C ho questo char foo[4]; char bar[4]; char baz[4]; Se da bar vado fuori sono in piena undefined behavior del linguaggio. A seconda di come funziona lo stack della piattaforma potrei finire in foo o in baz. Oppure potrei finire altrove ancora, non ho nessuna garanzia. Appunto, sono in undefined behavior. Ma se faccio la stessa cosa concettualemnte in asm[0] non sto violando nulla: non e' un errore hardware. -- [0] ovvero scrivo un programma che mi mette sullo stack abbastanza per ficcarci 12 caratteri che uso come 4 array separati e da quello di mezzo mi metto su uno degli altri due, sto probabilmente ancora violando la semantica che mi sono imposto, ma per il processore non sto facendo nulla di male. O poi mi va anche bene che gli accessi out mi diano panic... sarebbe veramente complicato avere una signature tipo el, err = arr[1] In alcuni casi panic viene anche usato quando i parametri di un > "costruttore" non sono validi > (in questo caso, in un mondo ideale, l'errore dovrebbe essere riportato > dal compilatore). > Che poi e' uno dei motivi per cui a suo tempo le eccezioni si diffusero... -- . ..: -enrico-
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python