Raise 语句:为什么我的代码块返回一个空列表而不是执行我的“raise”语句?

问题描述

首先,如果我的问题很愚蠢或者我的帖子中有任何错误,我深表歉意 - 这是我的第二篇文章,我仍然发现如何在这个平台上提出适当的问题很困难。

其次,我尝试使用 Python Docs 网站 (https://docs.python.org/3/tutorial/errors.html) 和 Stackoverflow 上的另一篇文章 (Raise statement) 中的示例查找“raise”语句背后的逻辑,但我仍然无法把我的头放在这个“提高”声明上。

我试图回答电子书使用 Python 进行计算和编程简介 中的以下问题:“实现满足规范的函数。” (见下面的功能规范)。

def findAnEven(L):
    """
    ASSUMES: L is a list of integers 
    RETURNS: the first even number in L
    Raises ValueError if L does not contain an even number
    """

下面是我试图解决这个问题:
def findAnEven(L):
    """
    ASSUMES: L is a list of integers
    RETURNS: the first even number in L
    Raises ValueError if L does not contain an even number
    """
    try:
        evenNumbers = []
        for i in L:
            if i % 2 == 0:
                evenNumbers.append(i)
                break
        return(evenNumbers)
    except ValueError:
        raise ValueError("ValueError exception thrown")
findAnEven([1,2,3,4]) # RETURNS: [2]
findAnEven([1,1,1]) # RETURNS: [] - THIS SHOULD EXECUTE RAISE STATEMENT,NOT RETURN AN EMPTY LIST            

我想了解为什么我的代码块只返回一个空列表,而不是执行我的“raise”语句?

如果有人能解释(用外行的话)为什么我的代码块会向最后一个函数调用返回一个空列表(即 findAnEven([1,1]) 而不是执行我的“raise”语句,我将不胜感激 - 再次为这个愚蠢的问题道歉!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)