要放大Messa,请捕获您知道如何恢复的故障模式。Ian
Bicking撰写了一篇文章,其中论述了Eli
Bendersky的笔记中的一些总体原则。
示例代码的问题在于,它 没有
处理错误,只是美化它们并将其丢弃。您的代码不“知道”与NameError关联的操作,除了传递代码外,它没有什么其他应做的事情。如果您觉得必须添加细节,请查看Bicking的重新提出。
IOError和OSError对于“合理”是“可预期的”,
shutil.move但不一定可处理。函数的调用者希望它移动文件,并且如果Eli编写的“合同”被破坏,它本身可能会破坏。
捕获您可以修复的内容,修饰并重新提出您期望但无法修复的内容,并让调用者处理您所期望的内容,即使“交易”的代码在堆栈中处于七个级别
main。



