Сообщения Stackoverflow очень помогли мне с Python, однако я застрял на этом. Я не могу понять, как просто пропустить модуль, если в нем есть исключения. Кроме того, если это происходит, мне нравится изменять одну переменную, чтобы остальная часть кода знала, чтобы пропустить функции, связанные с этим модулем.Обработка исключений Python в модуле
У меня есть main.py, который загружает мой модуль sms.py. Здесь вы также видите мою попытку, которая не работает:
try:
import sms
except ImportError:
print "Ok, lets skip that module"
dont_use_sms = 1
Часть sms.py, которая вызывает исключение выглядит следующим образом:
import gammu
sm = gammu.StateMachine()
sm.ReadConfig()
try:
sm.Init() # this one to be exact
except:
raise
, когда я запускаю это я получаю следующее:
Traceback (most recent call last):
File "./main.py", line 10, in <module>
import sms
File "/path/to/sms.py", line 7, in <module>
sm.Init()
gammu.ERR_DEVICENOTEXIST: {'Text': u"Error opening device, it doesn't exist.", 'Code': 4, 'Where': 'Init'}
Я попытался изменить исключение, поставив gammu.ERR_DEVICENOTEXIST в качестве аргумента, однако это не помогло. Я чувствую, что это исключение должно быть каким-то образом обработано sms.py и правильно перенаправлено на main.py, но не может понять, как это сделать.
Кстати, я знаю, что вызывает gammu.ERR_DEVICENOTEXIST, и это не проблема. Вопрос в том, как продолжить работу с остальной программой, если она появится.
Что вы для предложений.
Я не понимаю, почему у вас есть голый код в 'sms.py' ... Вы должны обернуть, что в' init_sms' функции или подобное ... Затем из 'main.py' просто используйте' import sms' и используйте try/except вокруг 'sms.init_sms()', где это подходит в основной логике - таким образом вы можете обнаружить устройство, которое не подключено в main, делать что угодно, и повторите 'sms.init_sms()' или иначе следуйте за другой ветвью логики –