[英]python basic try catch exception
我寫了一個代碼,它轉儲從串行端口收集的數字,內容如下:
readoff = ser.readline()
讀取的正確格式如下:
a=' 213 -456 725'
然后進行轉儲並進行一些計算,將其拆分為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部分)(如果它不是正確的數字),則跳過該讀數並繼續(讀取其他數據)。 我怎樣才能做到這一點 ?
感謝幫助
標准的python try-catch是:
try:
do_something_risky()
except ExceptionName as exc:
do_something_else()
指定要捕獲的異常非常重要,否則,您可能會捕獲到可能冒出的有害異常,從而導致難以檢測的錯誤。
您可以捕獲不同的異常並對異常做出不同的反應:
try:
do_something_risky()
except SomeException as exc:
do_this()
except AnotherException as exc:
do_that()
另外,您可以添加else
, finally
try:
do_something_risky()
except ExceptionName, AnotherPossibleException as exc:
do_something_else()
else:
do_something_when_no_exception_raised()
finally:
# Useful for cleaning up
do_something_no_matter_what_happens()
try:
# Do the problematic thing
except ValueError as exc:
# Manage the exception
您應該捕獲正在引發的特定異常,在這種情況下為ValueError:
try:
temparrayforx.append(int(splitted[0]))
except ValueError as e:
print e
捕獲特定的錯誤類型很重要,這樣您就不會意外捕獲很多意外錯誤-例如,如果splitd為空,則會引發IndexError。 裸露的'except:'或'except Exception:'會對您隱藏。
在您的情況下,由於您想捕獲幾個不同的錯誤情況(行沒有足夠的部分,值不是數字),您可以在相同的except子句中捕獲兩個異常類型,也可以捕獲兩個不同的except子句-例如,如果您需要針對每個問題做不同的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.