Python: 错误检查未能捕获异常
Python: error check failing to catch exception
我正在用 python 的精简版写作,微型 python。
我正在做一些图像处理,并试图从一个名为 "find_line_segments" 的方法中找到最长的线 return(它执行 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() 函数没有 return 值(在找不到行的情况下),则 "if statement" 永远不会执行。
我有什么不明白的?
编辑:
不小心删除了一些代码。
尝试将 max(img.find_line_segments(...)...)
语句分成两个语句,并在使用 max
函数之前测试 find_line_segments
的结果是否正确。听起来 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)
我正在用 python 的精简版写作,微型 python。
我正在做一些图像处理,并试图从一个名为 "find_line_segments" 的方法中找到最长的线 return(它执行 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() 函数没有 return 值(在找不到行的情况下),则 "if statement" 永远不会执行。
我有什么不明白的?
编辑:
不小心删除了一些代码。
尝试将 max(img.find_line_segments(...)...)
语句分成两个语句,并在使用 max
函数之前测试 find_line_segments
的结果是否正确。听起来 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)