这篇文章是基于 《Effective Python——编写高质量Python代码的59个有效方法》[美] 布雷特·斯拉特金 著 爱飞翔 译 这本书中的内容,写写自己在某方面的感悟,并摘录一些作为读书笔记供今后鞭策。侵删。
第 51 条:为自编的模块定义根异常,以便将调用者与API相隔离
在为模块定义其 API 时,该模块所抛出的异常,与模块里定义的函数和类一样,都是接口的一部分。
Python内置了一套异常体系,以供语言本身及标准库使用。于是,我们也总想使用这些内置的异常类型来报告错误,而不想自己去定义新的类型。例如,当外界给函数传入了无效的参数时,我们可能想抛出 ValueError 异常,以指出这一错误。
raise ValueError('Density must be positive')
在某些情况下,使用 ValueError 也许是比较合适的,但是在设计 API 时,还是应该自己来定义一套新的