2012-04-12 13 views
1

私はの形でカスタム例外クラスと1つのスクリプトを持っていた:カスタム例外のPython 2.6.5での取り扱いとインポートモジュール

:私はの形で同じスクリプトで私の機能を持っていた

class DirectionError(Exception): 
    pass 

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

は、私は、その後Fを移動:

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

私は私の関数はの形でブロックを除き、/以外/試しに呼び出して置きます別個のmytools.pyファイルへの結合。 mytools.pyファイルをメインのPythonスクリプトにインポートします。

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

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

ありがとうございました。

+2

メインのpythonスクリプトに 'mytools.py'をどのようにインポートしましたか?何かエラーがありますか?明示的にDirectionErrorをインポートしてみてください: 'from mytools import DirectionError' –

+0

例外は、func1(1)を呼び出してfunc1(2)を呼び出すときにのみ発生します。 – KurzedMetal

+0

@ KurzedMetal、すみません..私はそれを得ました。 func1(1)としましょう。 – Justin

答えて

2

両方にそのファイルをインポートします。 あなたが

import mytools 

としてそれをインポートした場合は、変更:

except DirectionError: 

へ:

except mytools.DirectionError: 

は動作するはずです。

あなたとあなただけの機能をインポートした場合:

from mytools import func1 

に変更し、それを:

from mytools import func1, DirectionError 

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

さらに、func1(1)を呼び出してfunc1(2)を呼び出すときに例外が送出されます。

0

は、独自のスクリプトファイルで例外を定義して、それはあなたがmytoolsをインポートた方​​法によって異なりmytools.pyとあなたの主なスクリプト

+0

私はimport customexceptions.pyと言って、次にfunc1(2)を試してみます:customExceptions.DirectionError – Justin

+0

なぜこれが必要なのか説明できますか?ありがとうございました。 – bernie

+0

自分のファイルに移動する必要はなく、インポートするだけで済みます。 – KurzedMetal