[Python] Python exception or return code.

enrico franchi enrico.franchi a gmail.com
Dom 1 Mar 2015 16:33:02 CET


2015-03-01 14:40 GMT+00:00 Manlio Perillo <manlio.perillo a 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-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150301/1f13e47f/attachment-0001.html>


Maggiori informazioni sulla lista Python