Python文档提供的例外指南

mr_*_*r_c 8 python exception

根据关于异常的成语和反成语的Python文档:"你应该尝试尽可能少地使用代码中的子句 - 你使用的那些通常是在应该总是成功的调用中,或者在主要功能中抓住所有." 分段考虑这句话......

"你应该尝试尽可能少地使用代码中的除了子句"

对于像我这样的新手来说有点令人困惑,我认为在Python中使用EAFP样式 - 很多tryexcept语句是很好的做法.或者我错过了这一点?

"你使用的那些通常是在应该总是成功的电话里面"

我不明白这里的意思.

"或者是主要功能的全能."

因此,任何抛出异常的代码都是好的风格,只是简单地将它传递给调用堆栈,直到它达到你真正通用的异常处理的顶层为止?

Rol*_*ith 1

关于第一点,使用异常的全部意义在于您不必将每一行都包装在一行中!例如,在 C 中,错误通常由函数调用的返回值确定。因此,如果您想捕获所有错误,则必须在每次调用后检查这些错误。使用Python,您可以将一个(可能很大)语句块组合在一个try/ except 块中,并且只处理所有错误一次

第二点是(如果可能的话)您希望在接近故障发生点的位置解决故障。例如,您正在从网络读取数据并获得零字节。在这种情况下,等待并重试通常是完全可以的。

最后一点是,有时错误太大,无法在低级别处理。例如,如果您尝试打开一个不存在的文件,它将失败。并且您的程序无法对文件的内容执行任何操作。最好在程序的顶层处理这个问题,并要求用户提供另一个文件名,或者退出程序。