我已经Python2.7.9
为一个小项目制作了一个地图编辑器,并且我正在寻找在发生一些未处理的异常时保留我编辑的数据的方法。我的编辑器已经有了保存数据的方法,我目前的解决方案是将主循环包裹在一个try..finally
块中,类似于这个例子:
import os, datetime #..and others.
if __name__ == '__main__':
DataMgr = DataManager() # initializes the editor.
save_note = None
try:
MainLoop() # unsurprisingly, this calls the main loop.
except Exception as e: # I am of the impression this will catch every type of exception.
save_note = "Exception dump: %s : %s." % (type(e).__name__, e) # A memo appended to the comments in the save file.
finally:
exception_fp = DataMgr.cwd + "dump_%s.kmap" % str(datetime.datetime.now())
DataMgr.saveFile(exception_fp, memo = save_note) # saves out to a dump file using a familiar method with a note outlining what happened.
这似乎是确保无论发生什么情况,都会尝试在编辑器saveFile()
崩溃的情况下保留编辑器的当前状态(在能够这样做的范围内)的最佳方式。但是我想知道将我的整个主循环封装在一个try
块中是否实际上是安全、高效和良好的形式。是吗?是否存在风险或问题?有没有更好或更传统的方法?