2011-05-15 32 views
1

我正在製作一個小型Python模塊。我希望這個模塊返回錯誤,如果有的話。什麼是在Python中創建錯誤對象的正確或標準方法?如何製作正確的錯誤對象?

編輯:我真的不知道如何創建我自己的錯誤,當然,因爲我不知道錯誤是如何工作的(我只知道如何在try: ... except: ...中捕獲它們)。 所以,現在我製作了草稿錯誤消息,錯誤是字符串。當出現意想不到的情況時,我會打印和return None。我想這是不正確的方法:)

例子:

... 
    self.IsNotStringError = "Args was not a string." 
    ... 

def myMethod(self, args) 
    """ Args must be a string. """ 
    if not isinstance(args, str): 
     print IsNotStringError 
     return None 
    else: 
     do things... 

編輯(之二):在閱讀下面的答案,我已進一步看着Python文檔。有a tutorial on how to make user-defined exceptions。從文檔

例子:

class MyError(Exception): 
    def __init__(self, value): 
    self.value = value 
    def __str__(self): 
     return repr(self.value) 

回答

5

您可以通過繼承Exception創建自己的異常類:

class YourError(Exception): pass 

下一個剛提出來時,你需要:

raise YourError("error message") 
+0

謝謝。我不明白你爲什麼在你的異常之後「傳遞」,也不知道錯誤消息爲什麼沒有在YourError類中定義。你能解釋一下嗎? – Benjamin 2011-05-15 08:31:07

+1

沒關係,我找到[documentation](http://docs.python.org/tutorial/errors.html#tut-userexceptions) – Benjamin 2011-05-15 08:43:19

2

的問題始終是:

  • 返回一些錯誤的對象或
  • 引發異常

這一切都取決於個人用例和wha你正在努力完成。

明確的例外通常是更好的選擇。通過從Exception繼承來創建自己的異常,可以完全控制。將任意值傳遞給您自己的異常的構造函數非常簡單。捕獲調用方的異常並反省存儲的異常數據也是微不足道的。

如果您期望超過元回答,您必須更具體。

+0

感謝。我真的不明白錯誤和異常之間的區別。你能舉一個例子來說明如何構造一個異常?這有什麼標準嗎? – Benjamin 2011-05-15 08:34:29

+0

我發現了一些關於如何創建自定義異常的文檔(http://docs.python.org/tutorial/errors.html#tut-userexceptions)。但我仍然不確定錯誤和異常之間有什麼區別。 – Benjamin 2011-05-15 08:45:00

相關問題