用Python方式警告开发人员代码破损

时间:2019-02-18 20:36:16

标签: python

是否有一种python方式将异常抛出给其他开发人员,以警告他们使用带有错误的代码?

例如:

def times_two(x):
    raise BrokenException("Attn.This code is unreliable. Only works on positive numbers")
     x = abs(x) * 2
     return x

我知道我可以在消息中引发泛型异常,甚至可以派生自己的异常类,但是我只想知道是否存在内置的pythonic方法来执行此类操作。

而且,我了解为什么实际的times_two函数不起作用。那只是一个示例函数。

这不是验证输入参数甚至返回值的东西。

这仅仅是为了将功能标记为潜在不可靠。

在非常特殊的情况下,必须在某些区域使用代码,但是在开发人员编写代码并跨此功能运行时,应警告其局限性。

4 个答案:

答案 0 :(得分:0)

对于任何需要警告开发人员的用例,您的示例都存在很大缺陷。这将需要提醒用户不要输入负数。

def times_two(x):
    if x < 0:
        raise BrokenException("Attn user. Don't give me negitive numbers.")
    return x * 2

尽管,我认为,如果您的示例更准确地描述了需要开发人员注意的实际错误,那么您应该仅对此进行修复,而不要在知道存在错误的情况下将其投入生产。

另一方面,

sentry.io可以帮助发现错误并帮助开发人员在生产过程中修复错误。如果warnings不适合您,您可能需要调查一下。来自他们的README.me:

  

Sentry从根本上说是一项服务,可帮助您监视和修复   实时崩溃。服务器使用Python,但其中包含完整的   用于在任何应用程序中以任何语言发送事件的API。

答案 1 :(得分:0)

应使用构建异常'ValueError'。

def times_two(x):
    if x < 0:
        raise ValueError('{} is not a positive number.'.format(x))
    return x * 2

答案 2 :(得分:0)

这似乎是XY问题。最初的问题是您有一些代码不完整或已知无法正常工作。如果这是您当前正在处理的东西,则此处使用的正确工具是版本控制。使用Git,您将创建一个新分支,该分支仅合并到master中,并准备在完成工作后发布到生产环境。您不应该发布部分实现。

答案 3 :(得分:0)

是否要在调用函数时停止执行?如果是这样,那么某种异常(例如您示例中的BrokenException)是实现此目的的好方法。

但是,如果您想警告呼叫者,然后继续进行操作,则需要Warning而不是异常。您仍然可以创建自己的:

class BrokenCodeWarning(Warning)
    pass

raise BrokenCodeWarning时,默认情况下不会停止执行,但会在stderr上显示警告。

  

警告过滤器控制警告是被忽略,显示还是变成错误(引发异常)。

https://docs.python.org/3.7/library/warnings.html#the-warnings-filter