【发布时间】:2019-02-21 13:05:40
【问题描述】:
我有类似的方法或功能:
findSomething(v)
如果我没有找到任何东西或者最好定义我自己的异常,是否适合引发 KeyError?你怎么看?
我知道,这不是严格的技术问题,但他们说:“可读性很重要”,我需要知道其他人的想法。 :)
【问题讨论】:
-
什么是
v?你需要找到什么?如果需要找钥匙,那么KeyError就可以了。如果您需要查找文件,请使用FileNotFoundError。如果您需要对异常进行任何自定义行为,请定义一个新行为(可能是现有行为的子类)。 -
可能使用您的库的代码需要以不同于随机其他 KeyErrors 的方式处理此异常?如果是这样,它需要是不同的类型(即使它是 KeyError 的子类)。请记住,如果您使用泛型类型,那么如果他们需要在异常处理程序中将其与该泛型类型的不同实例消除歧义,那么您注定要遭受丑陋、脆弱的黑客攻击。
-
相关:Is a best practice question off-topic? 和 What goes on Software Engineering (previously known as Programmers)? A guide for Stack Overflow。这个问题在 SO 上不是主题,但这并不意味着没有其他 SE 站点会受到欢迎。
标签: python zen-of-python