2012-04-12 43 views
1

我的形式有自定義異常類一個腳本:自定義異常處理在Python 2.6.5和導入模塊

class DirectionError(Exception): 
    pass 

我有我的功能在同一個腳本的形式:

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

我把我的函數調用的形式進入一個try /除/ except塊:

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

我隨後移動的F將其分解成單獨的mytools.py文件。我將mytools.py文件導入到我的主python腳本中。

我將自定義異常類移入mytools.py文件,但異常未到達主python腳本。

如何獲取mytools.py文件中的這些函數以將異常發送回我的主python腳本中的try/except塊?

謝謝。

+2

你是如何將'mytools.py'導入到主python腳本中的?你有任何錯誤?嘗試顯式導入DirectionError:'from mytools import DirectionError' – 2012-04-12 15:27:05

+0

只有當您調用func1(1)並且您正在調用func1(2)時,纔會引發異常。 – KurzedMetal 2012-04-12 15:35:32

+0

@KurzedMetal,對不起..我明白了。讓我們說func1(1)。 – Justin 2012-04-12 15:42:17

回答

2

這要看你是怎麼導入銘佑。 如果導入它作爲

import mytools 

然後改變:

except DirectionError: 

到:

except mytools.DirectionError: 

應該工作。

如果你只進口了你的函數:

from mytools import func1 

將其更改爲:

from mytools import func1, DirectionError 

基本上,你需要導入DirectionError類到你的主代碼並正確地引用它。

此外,只有在您調用func1(1)並且您正在調用func1(2)時,纔會引發異常。

0

定義例外在自己的腳本文件,然後將該文件導入既mytools.py和主腳本

+0

所以我說導入customExceptions.py,然後嘗試:func1(2)除外:customExceptions.DirectionError – Justin 2012-04-12 15:28:20

+0

你能解釋爲什麼這是必要的嗎?謝謝。 – bernie 2012-04-12 15:34:28

+0

沒有必要將它移動到他自己的文件中,只需要導入它。 – KurzedMetal 2012-04-12 15:37:50