Python try/ except 不停止错误

问题描述 投票:0回答:1

我的以下代码旨在处理异常并在未找到任何内容时切换串行端口。

try:
    serial_port = '/dev/cu.usbserial-10'
except:
    try: 
        serial_port = '/dev/cu.usbserial-110'
    except:
        print("Unable to find sensor. Try again")

但是,它实际上并没有处理异常,仍然让它们到达控制台:

Traceback (most recent call last):
  File "/Users/username/Library/Python/3.10/lib/python/site-packages/serial/serialposix.py", line 322, in open
    self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: '/dev/cu.usbserial-10'

我已在代码中设置它,以便如果没有

/dev/cu.usbserial-10
,它会尝试
serial-110
,如果不存在,它会打印一些内容,但永远不会打印。

编辑:

我正在使用 pyserial,因此

serial_port
作业会尝试查找文件位置。
'/dev/cu.usbserial-10'
是我电脑上的 USB 端口之一。

错误确实表明它位于第 322 行,但我的文件长度不超过 100 行。

更多背景:

import serial

serial_port = 0

try:
    serial_port = '/dev/cu.usbserial-10'
except:
    try:
        serial_port = '/dev/cu.usbserial-110'
    except:
        print("no")


baud_rate = 115200

ser = serial.Serial(serial_port, baud_rate) # serial data, non-usable

try:
    while True:
        rawdata = ser.readline().decode().strip() # raw string data from serial
        print(rawdata)

这实际上是我的整个文件,当找到

usbserial-10
时,它就可以工作了。

python python-3.x exception pyserial try-except
1个回答
0
投票

根据发布的代码,您尝试执行某种根据分配的文本打开串行端口的功能。

try:
serial_port = '/dev/cu.usbserial-10' 
    #you're only assigning the value to a variable . you actually need to call the function that youre testing with that variable here
except:
    try: 
        serial_port = '/dev/cu.usbserial-110'
    except:
        print("Unable to find sensor. Try again")

这是示例代码:

try:
serial_port = '/dev/cu.usbserial-10'
response=open_serial_port(serial_port) #assuming 'open_serial_port' is the function name.
except:
    try: 
        serial_port = '/dev/cu.usbserial-110'
        response=open_serial_port(serial_port) #assuming 'open_serial_port' is the function name.
    except:
        print("Unable to find sensor. Try again")

这是如何修复它的示例。

© www.soinside.com 2019 - 2024. All rights reserved.