<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-03-01 14:40 GMT+00:00 Manlio Perillo <span dir="ltr"><<a href="mailto:manlio.perillo@gmail.com" target="_blank">manlio.perillo@gmail.com</a>></span>:</div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div>Pensa a panic come una eccezione hardware, tipo SIGSEGV.</div><div>Non è una situazione da cui puoi effettuare un ricovero "normale".</div></div></blockquote><div><br></div><div>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</div><div><br></div><div>char foo[4];</div><div>char bar[4];</div><div>char baz[4];</div><div><br></div><div>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.</div><div><br></div><div>Ma se faccio la stessa cosa concettualemnte in asm[0] non sto violando nulla: non e' un errore hardware. </div><div>--</div><div>[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.</div><div><br></div><div>O poi mi va anche bene che gli accessi out mi diano panic... sarebbe veramente complicato avere una signature tipo</div><div><br></div><div>el, err = arr[1]</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div></div><div>In alcuni casi panic viene anche usato quando i parametri di un "costruttore" non sono validi</div><div>(in questo caso, in un mondo ideale, l'errore dovrebbe essere riportato dal compilatore).</div><div></div></div></blockquote></div><br>Che poi e' uno dei motivi per cui a suo tempo le eccezioni si diffusero...<br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>