如何合并值错误?

How to combine value errors?

我有两个函数可以检查数据的正确性。这两个函数都会引发 ValueError。这些函数在“for”循环中执行,因此当一个函数引发错误时,第二个函数将不会执行。有没有可能通过第三个函数将 ValueErrors 和 return 它们结合起来? 例如:

datas = [4, "is", "data", None]

def func(word):
    if not word:
        raise ValueError("Wrong data!")

def func1(word):
    if type(data) != str:
        raise ValueError("Data isn't string!")

for data in datas:
    func(data)
    func1(data)

我想要的输出:

ValueError: Wrong data!
ValueError: Data isn't string!

我不确定 ValueErrors 是否可行,但也许还有其他一些合并错误的方法?

实现此目的最简单的方法是在列表中累积异常,然后按您认为合适的方式处理错误:

datas = [4, "is", "data", None]

errors = []

def func(word):
    if not word:
        raise ValueError("Wrong data!")

def func1(word):
    if type(data) != str:
        raise ValueError("Data isn't string!")

for data in datas:
    try:
        func(data)
        func1(data)
    except ValueError as e:
        errors.append(e)

for error in errors:
     print(error)

会输出

Data isn't string!
Wrong data!