pythonic方法警告开发人员是否有损坏的代码



是否有一种pythonic向其他开发人员提出异常的方式,以警告他们使用其中带有错误的代码?

例如:

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函数不起作用。那只是一个示例函数。

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

这仅仅是为了将函数标记为潜在的不可靠。

在非常具体的情况下,必须在某些领域使用该代码,但是当开发人员编写代码并在此功能上运行时,应警告限制。

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

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,在任何应用程序中。

内置异常'valueError'是应该使用的。

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

这似乎是一个XY问题。最初的问题是您有一些不完整或已知不起作用的代码。如果您当前正在处理的事情,那么这里使用的正确工具是您的版本控件。使用GIT,您将创建一个新的分支,该分支仅合并到master中,并在完成工作后准备发行生产。您不应该发布部分实现。

您是否要在调用函数时停止执行?如果是这样,那么某种例外,例如示例中的BrokenException是一种很好的方法。

但是,如果您要警告 然后继续继续前进,则需要Warning而不是异常。您仍然可以创建自己的:

class BrokenCodeWarning(Warning)
    pass

当您 raise BrokenCodeWarning时,执行将默认情况下不是被停止,但是将打印到stderr的警告。

警告过滤器控制是否忽略,显示或变成错误(提高例外)。

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

最新更新