1

次の形式のカスタム例外クラスを持つスクリプトが1つありました。

class DirectionError(Exception):
    pass

同じスクリプトで次の形式の関数を使用しました。

def func1(x):
    if x == 1:
        raise DirectionError

関数呼び出しを次の形式でtry/except/exceptブロックに入れます。

try:
    func1(2)
except DirectionError:
    logging.debug("Custom error message")
    sys.exit()
except:
    logging.debug(traceback.format_exc())

その後、関数を別のmytools.pyファイルに移動しました。mytools.pyファイルをメインのPythonスクリプトにインポートします。

カスタム例外クラスをmytools.pyファイルに移動しましたが、例外がメインのpythonスクリプトに到達していません。

mytools.pyファイルでこれらの関数を取得して、メインのPythonスクリプトのtry / exceptionブロックに例外を送り返すにはどうすればよいですか?

ありがとう。

4

2 に答える 2

2

mytoolsをどのようにインポートしたかによって異なります。としてインポートした場合

import mytools

次に変更します:

except DirectionError:

に:

except mytools.DirectionError:

動作するはずです。

関数のみをインポートした場合:

from mytools import func1

次のように変更します。

from mytools import func1, DirectionError

基本的に、DirectionErrorクラスをメインコードにインポートして正しく参照する必要があります。

また、func1(1)を呼び出し、func1(2)を呼び出している場合にのみ、例外が発生します。

于 2012-04-12T15:32:28.490 に答える
0

独自のスクリプトファイルで例外を定義してから、そのファイルをmytools.pyとメインスクリプトの両方にインポートします

于 2012-04-12T15:23:36.147 に答える