模块内的Python异常处理
Stackoverflow帖子在Python方面帮了我很大的忙,但我还是坚持了这一点。如果模块中有异常,我不知道如何简单地跳过它。此外,如果发生这种情况,我喜欢修改一个变量,这样其他代码就可以跳过与该模块相关的功能 我有main.py,它正在加载我的模块sms.py。在这里,您还可以看到我的尝试不起作用:模块内的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 =
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-aboutsms.init_sms()
,这样,您就可以检测未连接到main的设备,执行任何操作,然后重试sms.init_sms()
,或者遵循另一个逻辑分支