【问题标题】:Python - Clean Code, no implemented exceptions?Python - 干净的代码,没有实现的异常?
【发布时间】:2020-03-16 17:14:46
【问题描述】:

我正在开发一个 API,它允许对特定模式的 python dicts 进行简单的数据操作。用户可以传递在这些字典中用作键的参数。例如:

def get_columns(self, name):
    for ... in self.data[name]:
       ...
    ...

如果名称不在数据字典中,它应该抛出异常。

我的问题是:我需要添加这样的异常处理吗? dict 本身会引发 KeyError 。什么是更好的做法?

【问题讨论】:

  • 你想达到什么目的?谁消耗了这个错误?让 KeyError 冒泡可能很好,但没有上下文告诉你什么是最好的。
  • 如果您想向用户报告更直观的消息,您也可以处理。

标签: python coding-style


【解决方案1】:

如果您希望函数简单地抛出 KeyError 而不是其他任何东西,则无需将其包装在 try except 语句中(这将是多余的,因为异常会在调用中传播反正堆栈)。

如果您希望它具有其他一些行为(例如,跳过 for 循环、返回专门的错误消息、可能返回某种默认值),那么您就需要使用异常处理。

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多