Raising an error se detiene todo el programa en ese momento (a menos que se detecta la excepción), mientras que printing el mensaje simplemente escribe algo a stdout
- la salida podría ser conducido a otra herramienta, o alguien que no se esté ejecutando la aplicación de la línea de comando, y la salida print
puede que nunca se vea.
Por ejemplo, ¿qué pasaría si su código es como:
if size < 0:
print 'size must be non-negative'
else:
print size * 4
y yo llame a su guión como:
number_source.txt yours.py | sum_all_lines.sh
Si yours.py
genera texto sin formato entre números, entonces quizás mi sum_all_lines.sh
falle porque estaba esperando todos los números. Sin embargo, si yours.py
se cierra debido a una excepción, entonces sum_all_lines.sh
no terminará, y me quedará claro por qué falló la suma.
Por supuesto, eso es sólo un ejemplo, y su caso particular puede ser completamente diferente.
Cuando probó este código, ¿qué diferencias observó? –