0

Stackoverflow 的帖子在 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 的原因,这不是问题。问题是如果它出现如何继续其余程序。

那你的建议。

4

1 回答 1

0

您还可以更改 main.py。

代替:

except ImportError:

你可以说:

except:

然后它应该继续。

PS:赤裸裸的except语句不是好风格

于 2015-03-01T09:20:12.170 回答