Reputation: 349
So I've seen mention elsewhere of using the following to re-raise an exception.
try:
whatever()
except:
raise
What is the purpose re-raising an exception? Surely an uncaught exception will just raise to the top anyway? i.e:
try:
int("bad")
except:
raise
has identical output to:
int("bad")
i.e. I get a ValueError in the console.
Upvotes: 5
Views: 1199
Reputation: 2665
Imagine the following code.
A little setup: You are responsible for maintaining a huge database of information for example, and any loss of data would be catastrophic!
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
Upvotes: 2
Reputation: 155438
Your example code is pointless, but if you wanted to perform logging or cleanup that only occurs on failure, you could put that between the except:
and the raise
and you'd do that work and then proceed as if the original exception was bubbling normally.
Upvotes: 4