Stackoverflow の投稿は Python で大いに役立ちましたが、私はこれに固執しました。モジュール内に例外がある場合、モジュールを単純にスキップする方法がわかりません。また、それが発生した場合は、1 つの変数を変更して、残りのコードがそのモジュールに関連する機能をスキップすることを認識できるようにします。
モジュール sms.py をロードしている main.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 の原因はわかっていますが、それは問題ではありません。質問は、表示された場合に残りのプログラムを続行する方法についてです。
提案してください。