重新引发异常有什么意义?

Dav*_*ard 5 python exception

所以我在其他地方看到提到使用以下内容来重新引发异常。

try:
    whatever()
except:
    raise
Run Code Online (Sandbox Code Playgroud)

重新引发异常的目的是什么?无论如何,未捕获的异常肯定会上升到顶部吗?IE:

try:
    int("bad")
except:
    raise
Run Code Online (Sandbox Code Playgroud)

具有相同的输出:

int("bad")
Run Code Online (Sandbox Code Playgroud)

即我在控制台中收到 ValueError 。

The*_*ter 2

想象一下下面的代码。

一个小设置:例如,您负责维护一个巨大的信息数据库,任何数据丢失都将是灾难性的!

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
Run Code Online (Sandbox Code Playgroud)