首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:错误检查未能捕获异常

Python:错误检查未能捕获异常
EN

Stack Overflow用户
提问于 2017-07-19 20:52:47
回答 1查看 176关注 0票数 0

我正在编写一个精简版本的python,即micro。

我正在做一些图像处理,并试图找到从一个名为"find_line_segments“的方法返回的最长的行(它进行Canny Edge和Hough line转换)。

但!我一直在犯错误。

代码

代码语言:javascript
复制
    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)

错误:

代码语言:javascript
复制
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()函数不返回值(如果找不到一行),则"if语句“永远不会执行。

我有什么不明白的?

编辑:

无意中删除了一些代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-19 21:15:56

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

代码语言:javascript
复制
# Dummy function
def find_line_segments():
    return []

max_segment = max(find_line_segments())

给出在空序列上尝试使用max()的异常:

代码语言:javascript
复制
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

这样做是为了避免出现异常。

代码语言:javascript
复制
segments = find_line_segments()
if segments:
    max_segment = max(segments)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45200793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档