0

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 の原因はわかっていますが、それは問題ではありません。質問は、表示された場合に残りのプログラムを続行する方法についてです。

提案してください。

4

1 に答える 1