¿Cuál es el punto de reenviar excepciones?

Así que he visto una mención en otra parte del uso de lo siguiente para volver a generar una excepción.

try: whatever() except: raise 

¿Cuál es el propósito de reenviar una excepción? ¿Seguramente una excepción no capturada solo subirá a la cima de todos modos? es decir:

 try: int("bad") except: raise 

tiene salida idéntica a:

 int("bad") 

Es decir, me sale un ValueError en la consola.

Imagina el siguiente código.

Una pequeña configuración: usted es responsable de mantener una gran base de datos de información, por ejemplo, ¡y cualquier pérdida de datos sería catastrófica!

 huge_dictionary = {'lots_of_important':['stuffs']} try: check_data(new_data) #make sure the data is in the correct format huge_dictionary['lots_of_important'].append(new_data) except: data_writer.backup(huge_dictionary) data_writer.close() #and any other last second changes raise 

Su código de ejemplo no tiene sentido, pero si desea realizar un registro o una limpieza que solo se produce en caso de error, puede poner eso entre la except: y el raise y usted haría ese trabajo y luego proceder como si la excepción original estuviera burbujeando normalmente .