我正在尝试确定一些如何编写异常消息的准则。在
例如,假设一个假设函数必须接收一个常量字节数(作为bytes
对象),我们用[1, 2, 3]
来调用它。以下是所有可能的例外情况:
1. TypeError
2. TypeError: argument must be 16 bytes
3. TypeError: argument must be 16 bytes; got 'list'
4. TypeError: argument must be 16 bytes; got 'list' [1, 2, 3]
一般来说,我觉得消息应该总是解释没有满足的条件,但是我对包含多少关于冒犯对象的信息持保留态度。在
关于这个问题有什么指导方针吗?在
我没有太多的“既定习惯用法”链接可供您参考,但以下是我的2美分:
您的目标是让遇到异常的可怜的sap(即,可能不是您和/或将来很长的时间)有足够的信息来理解问题,并希望能够解决它。在
通过以下几种方式传达信息:
您还应考虑:
但一般来说,我认为最好问问自己:“如果我在生产代码中遇到了这个异常,我想要什么信息可以提供给我?”在
就个人而言,在你给出的例子中,我每次都会选择选项(4)。我不认为这是太多的信息。你的异常看起来像是不应该发生的事情,如果它真的发生了,你想知道到底是什么出了问题。在
如果你漏掉了信息,如(1-3)所示,你就有机会混淆到底发生了什么。在
不要在消息中提供多余的信息-不要只是为了它而冗长。但是,为了未来的维护人员的利益,交流所有相关的信息。在
好问题!在
当我通常创建自定义异常时,我通常会查看Python集合,它通常是详尽无遗的。在
至于提供多少细节的问题,我不会说得太具体,因为你不知道什么会触发或导致它们。在
例如:
它的描述性足以让我知道
+
运算符不受支持,我不需要知道字符串包含什么。在所以在你的例子中,前两个很好,第二个在我看来是太过分了
祝你好运。在
相关问题 更多 >
编程相关推荐