如何处理代码中的警告(不是编译器)

时间:2014-08-24 22:30:00

标签: functional-programming

假设您有A,B和C函数。将调用A然后调用B然后B调用C.C循环一堆东西。 C确定存在警告,至少应该知道用户,但它不会阻止该过程。你会如何将这些警告传达给A?

如果我传递一个列表用于从A到B的警告,那么它直接传递给C,因为B没有用它。例外会阻止C继续循环。

这是正常的问题吗?什么是优雅的解决方法?

编辑:代码示例

def A():
    items = [
        [1,2,3],
        [4,5,6],
        [7,8,9]
    ]
    try:
        B(items)
    except Exception, e:
        print e

def B(items):
    for num_list in items:
        if len(num_list) == 0:
            raise ValueError('A numberlist cannot be emtpy')

        C(num_list)

def C(numbers):
    for num in numbers:
        if num > 9:
            ## -- Warning???
            print '%i is greater than 9, this might break things'

        print num

1 个答案:

答案 0 :(得分:1)

我有一个A传递一个函数,可以写入某种类型的日志,然后写入B然后是C,然后C可以调用它来记录警告。如果您使用支持参数的语言(如Racket),则可以使用这些语言。请注意,这并不是指函数参数,在Racket参数中是一种处理线程安全状态和更优雅风格的机制。本质上,参数是一个变量,您只能针对特定的代码部分进行变更,并且它会在退出后自动回滚更改,即使是异常或连续跳转等意外控制流也是如此。我知道除了Racket之外没有其他语言可以提供这种结构。