Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模块内的Python异常处理_Python_Exception_Module_Gammu - Fatal编程技术网

模块内的Python异常处理

模块内的Python异常处理,python,exception,module,gammu,Python,Exception,Module,Gammu,Stackoverflow帖子在Python方面帮了我很大的忙,但我还是坚持了这一点。如果模块中有异常,我不知道如何简单地跳过它。此外,如果发生这种情况,我喜欢修改一个变量,这样其他代码就可以跳过与该模块相关的功能 我有main.py,它正在加载我的模块sms.py。在这里,您还可以看到我的尝试不起作用: try: import sms except ImportError: print "Ok, lets skip that module" dont_use_sms =

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'}
当我运行此命令时,我得到以下信息:

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'}
回溯(最近一次呼叫最后一次):
文件“/main.py”,第10行,在
导入短信
文件“/path/to/sms.py”,第7行,在
sm.Init()
gammu.ERR_DEVICENOTEXIST:{'Text':u“打开设备时出错,它不存在。”,'Code':4,'其中':'Init'}
我试图通过将gammu.ERR_DEVICENOTEXIST作为参数来改变异常,但并没有起到任何作用。 我觉得这个异常应该由sms.py以某种方式处理,并正确地转发到main.py,但我不知道如何处理

顺便说一句,我知道是什么导致gammu.ERR_DEVICENOTEXIST,这不是问题。问题是,若程序的其余部分出现,如何继续


您也可以更改main.py

而不是:

except ImportError:
你可以说:

except:
然后它应该继续下去


注:裸体除了声明不是好的风格

这一款实际上很有效,而且做了我想要的。但我会向前看,因为。如前所述,这不是好的做法。非常感谢。对但是你已经在sms.py中有了一个裸除条款。所以你有先例。我不明白为什么你在
sms.py
中有空代码。。。您应该将其包装在
init\u sms
函数或类似函数中。。。然后从
main.py
只需使用
import sms
并在主逻辑中合适的位置使用try/except-about
sms.init_sms()
,这样,您就可以检测未连接到main的设备,执行任何操作,然后重试
sms.init_sms()
,或者遵循另一个逻辑分支