我写了一个代码,将从串行端口收集的数字转储如下:
readoff = ser.readline()
正确的读数格式如下:
^{pr2}$然后,为了进行一些计算,我把它分成3部分,然后把它们变成整数,如下所示:
splitted=readoff.split()
if len(splitted) == 3 :
temparrayforx.append(int(splitted[0]))
temparrayfory.append(int(splitted[1]))
temparrayforz.append(int(splitted[2]))
但有时从串行口我读一些东西,比如:“2-264”,它不能变成一个整数。或者有时读数不能被三整除。在
以下是我的示例错误:
temparrayforx.append(int(splitted[0]))
ValueError: invalid literal for int() with base 10: '2-264'
我的目标是如果读数不正确(如果不是3部分)(如果不是正确的数字),跳过读数继续(读取另一个数据)。我怎么能做到呢?在
谢谢你的帮助
您应该捕获正在引发的特定异常,在本例中为ValueError:
捕获特定的错误类型很重要,这样您就不会意外地捕获到大量意外错误—例如,如果splitted为空,则会引发索引错误。一个简单的“except:”或“except Exception:”将对您隐藏这一点。在
在您的例子中,由于您想要捕获两个不同的错误情况(行没有足够的部分,值不是一个数字),您可以在同一个except子句中捕获两个异常类型,或者有两个不同的except子句-例如,如果您需要对每个问题执行不同的操作。在
标准的python try-catch是:
指定要捕获的异常非常重要,否则可能会捕捉到意外的异常,这些异常会冒出,导致错误难以检测。在
您可以捕捉不同的异常,并以不同的方式对它们作出反应:
^{pr2}$另外,您可以添加
else
和finally
对你来说
相关问题 更多 >
编程相关推荐