Python:错误检查无法捕获异常

时间:2017-07-19 20:52:47

标签: python micropython

我正在写一个精简版的python,micro python 我正在做一些图像处理,并试图找到一个名为" find_line_segments"的方法返回的最长行。 (它确实是Canny Edge和Hough Lines变换的。) 但!我不断收到错误 代码

    rl = max(img.find_line_segments(roi = r_r, threshold = 1000, theta_margin = 15, rho_margin = 15, segment_threshold = 100), key = lambda x: x.length())
    if rl is not None:
        if rl[6] > 0 :
            img.draw_line(rl.line(), color = 155)
            print("RL")
            print(rl)

错误:

Traceback (most recent call last):
File "<stdin>", line 77, in <module>
ValueError: arg is an empty sequence
MicroPython d23b594 on 2017-07-05; OPENMV3 with STM32F765
Type "help()" for more information.

该错误指向行if rl is not None: ...而且我不明白为什么会导致错误。如果max()函数没有返回一个值(如果没有找到一行),则&#34; if语句&#34;永远不应该执行 我不理解的是什么?

编辑:
意外删除了一些代码。

1 个答案:

答案 0 :(得分:1)

尝试将max(img.find_line_segments(...)...)语句分成两个语句,并在使用find_line_segments函数之前测试max的结果是否为任何结果。听起来max函数就是抛出异常的原因:

# Dummy function
def find_line_segments():
    return []

max_segment = max(find_line_segments())

尝试在空序列上使用max()时会出现此异常:

Traceback (most recent call last):
  File "C:\Users\ayb\Desktop\t (3).py", line 8, in <module>
    max_segment = max(get_line_segments())
ValueError: max() arg is an empty sequence

执行类似的操作以避免异常。

segments = find_line_segments()
if segments:
    max_segment = max(segments)