假设我有一些独立的 Python 代码来处理由其他实体(例如客户端)生成的数据。
我收到的数据可能格式不正确(例如,由于客户端的马虎、数据损坏等),因此我的 Python 代码中的处理会以某种方式失败,这将导致引发一些异常。让我们假设下游代码只是想知道处理是否正确和错误,而不是为什么出错。
我关心的是:在复杂的错误输入上引发此类异常的最佳做法是什么?在这种情况下如何组织异常?
数据在很多方面可能会被证明是不正确的,尤其是在数据的正确格式很复杂的情况下。在某些情况下,我自己可能很容易发现错误(例如,如果我发现不正确的魔法值,在这种情况下我可能会提高我的FancyCustomizedException
),但在其他情况下,也可能会引发一些通用异常(例如 some ValueException
)。
如果引发任何异常,是否可以说处理错误(在这种情况下,下游代码将使用非常通用的(和丑陋的)try: ... except: ...
)?
捕获所有通用异常并将它们隐藏在我的内部是否更好FancyCustomizedException
(在这种情况下,下游代码将使用非常不通用的代码,但我会在代码中try: ... except FancyCustomizedException, e: ...
乱扔)?try: ... except: ...