python 可重用的用户错误处理

标签 python error-handling functional-programming user-defined

我一直在玩弄错误处理。特别是用户定义的错误。

但是我不确定以下方法是否是一个坏主意/推荐/很奇怪?

import operator
from functools import partial


class GenericError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)


def errorhandle(error, func):
    print(func.__name__, "says: ", error)
# or perhaps error_dictionary[error]


def f_test_bool(x, bo, y, et, m, ef):
    """ generic boolean test. If boolean_operator(x,y) == True -->  raise passed in Error """
    try: 
        if bo(x,y):
            raise et(m)
        else:
            return x
    except et as err:
        ef(err, f_test_bool)



partial_ne = partial(f_test_bool, 
                     bo=operator.__ne__, 
                     et=GenericError, 
                     ef=errorhandle)

partial_ne( x = 5, 
            y = 6, 
            m = "oops, 5 is not equal to 6" )




>>> imp.reload(errorhandling)
f_test_bool says:  'oops, 5 is not eqal to 6'

我的想法是,通过这种方式,我可以拥有一个可以重用的简单模块,并通过管道传递值,而无需将用户定义的错误添加到我编写的任何新函数中。我认为这会让事情变得更干净。

最佳答案

您为应该简单明了的事情增加了很多开销。不要忘记 zen :

Simple is better than complex.



为什么不简单:
if 5 != 6:
   raise ValueError('oops, 5 is not equal to 6')

关于python 可重用的用户错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441217/

相关文章:

validation - 在“调用应用程序”阶段将inputText标记为无效

r - 如何忽略r中的空值并继续运行代码

for-loop - Go中for循环内的错误处理可能会导致下一次迭代

list - Haskell - 列表中累积的总和

coding-style - 如何以更优雅的方式解决这个 Python 难题?

python - URL 组件 % 和\x

python - 将 OpenCV-Python 转换为 C++/Objective C

javascript - 将包含单个数据数组的任务链接(或映射)到任务数组

python - Python 中惰性流的合并(使用生成器)

python - PySpark 如何找到合适数量的集群