Форум сайта python.su
Есть данная функция:
def get_dcv(self): self.connector.send('DCV?') return float(self.connector.receive())
Офлайн
def get_dcv(self): while data := self.connector.send('DCV?'): try: return float(data) except ValueError: pass
def isvalid(data): pass # здесь описать что является приемлимым return True\False def get_dcv(self): while data := self.connector.send('DCV?'): if isvalid(data): return float(data)
Отредактировано xam1816 (Фев. 9, 2022 21:20:18)
Офлайн
Irv1nНадо оставить функцию чистой от проверок. А на ошибку проверять снаружи.
Иногда с прибора прилетают битые данные и возникает ошибка: value error could not convert string to float и моя програма крашится. Как лучше всего обработать данную ошибку? Если прилетают битые данные то они отбрасываются и функция заново получает данные с прибора?
>>> import random >>> >>> def func(): ... n = random.randint(1, 5) ... if n > 4: ... print('ok', n) ... else: ... print('fail', n) ... raise ValueError ... >>> while True: ... try: ... func() ... except ValueError: ... continue ... break ... fail 4 fail 4 fail 3 fail 1 fail 3 fail 1 fail 4 fail 3 fail 4 fail 1 fail 1 fail 3 fail 2 ok 5 >>>
Отредактировано py.user.next (Фев. 10, 2022 00:35:54)
Офлайн