<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 12/07/11 17:59, <a class="moz-txt-link-abbreviated" href="mailto:piranna@gmail.com">piranna@gmail.com</a> wrote:<br>
<...><br>
<blockquote
cite="mid:CAKfGGh3HF-c3t0hpM+C-pZixRAOP7XhSU0+SG_-zfc=ucZ6stQ@mail.gmail.com"
type="cite">
<pre wrap="">La primera es mas o menos facilmente aceptable, y consiste en añadir
la posibilidad de añadir ramas 'elif' a la excepcion. Un ejemplo
(inventado):
<...>
try:
user = GetUser()
except ErrorDB:
print "error al obtener usuario"
elif user == 0:
print "Administrador"
else:
print "usuario normal"
finally:
print "adios"
Hace el try un poco mas complejo e incluso pedante, pero a nivel
interno (bytecode) deberian ser completamente iguales, y ademas es
totalmente retrocompatible.</pre>
</blockquote>
Esta propuesta, que podría parecer 'syntactic sugar', resulta ser
realmente, 'syntactic cyanide'.<br>
Si la estructura del bloque try no es tan corta como en este caso,
una lectura rápida en una revisión del código (por ejemplo, a la
captura de 'bugs'), nos llevaría a identificar incorectamente el
último bloque como el caso de la excepción no enumerada. Sería un
infierno.<br>
<br>
Hay que tener muy claro que la sintaxis original nos identifica
inmediatamente dos niveles de proceso distintos: el de la excepción
y el de la condición. La realimentación visual de la indentación nos
ayuda. En el caso propuesto es justo al contrario: la realimentación
visual nos engaña.<br>
<br>
Creo que mi respuesta a esta propuesta es muy clara 'Thumbs down'<br>
<br>
<blockquote
cite="mid:CAKfGGh3HF-c3t0hpM+C-pZixRAOP7XhSU0+SG_-zfc=ucZ6stQ@mail.gmail.com"
type="cite">
<pre wrap="">La segunda es un poco mas conflictiva, porque cambia un poco mas la
sintaxis para un caso expecifico. Consiste en que para una excepcion
(o grupo de excepciones) en concreto para las que no queremos que haga
nada no haya que indicar una rama vacia con 'pass':
try:
user = GetUser()
except ErrorDB:
pass
else:
print "hola",user
Mi idea es que para esas excepciones para las que no se necesite hacer
nada, indicarlas de alguna manera. Mi idea es hacerlo en el try:
try ErrorDB:
user = GetUser()
else:
print "hola",user
Obviamente, tambien se puede usar un grupo de excepciones:
try (ErrorDB,SocketError):
user = GetUser()
else:
print "hola",user
</pre>
</blockquote>
Esta segunda, no me parece tan criticable como la primera. Sólo
hacer notar que, en el proceso de desarrollo, muchas veces se
incluyen trazas en vez de 'pass' por razones de depuración o
'profiling', por lo que esta nueva sintaxis tendería a no ser usada
porque no sale naturalmente como evolución del código en desarrollo<br>
<br>
saludos<br>
<br>
Zarea<br>
<br>
<div class="moz-signature">-- <br>
<table align="CENTER" border="4">
<tbody>
<tr>
<td align="LEFT"><b>Q:</b> Why did the mathematician name
his dog "Cauchy"?</td>
</tr>
<tr>
<td align="LEFT"><b>A:</b> Because he left a residue at
every pole.</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
<p></p>
-- <br />
Grupo de usuarios de python ubicados en Madrid<br />
<a href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br />
<a href="http://python-hispano.org/PythonMadrid">http://python-hispano.org/PythonMadrid</a><br />
Para darte de baja del grupo envía un mensaje a python-madrid+unsubscribe@googlegroups.com<br />