2013-02-18 77 views
-2

我想提出一個檢查,看看閹SQLite中的字段有顧客預訂ID - 如果這樣做,將返回該行,等等等等。但是,如果他們不我得到以下錯誤防止錯誤消息?

TypeError: 'NoneType' object has no attribute '__getitem__' 

我知道這意味着什麼,什麼都沒有。 但我想知道如果有一種方法來防止錯誤,而是把消息放在那裏?

回答

1

您可以隨時捕獲的錯誤,如果你知道如何處理它:

try: 
    do_something_that_raises_error() 
except TypeError: 
    print("database doesn't have correct info") 
    sys.exit(1) 
+0

嘿,感謝迅速答覆 - 我嘗試使用這個,但它仍然給錯誤?任何進展? :) – OcelotcR 2013-02-18 20:30:11

+0

我不明白這是怎麼可能的,除非你把try/except放在一段錯誤的代碼中。 – mgilson 2013-02-18 20:31:16

+2

@CharlieSay:除非您向我們展示嘗試它的代碼以及您得到的錯誤和追溯,否則這些信息沒有用。如果你編寫了這個代碼,那麼你當然不會在這個時候得到一個'TypeError'。你可能會在這裏得到一個_different_錯誤,或者你可能從'try'之外的其他代碼中得到'TypeError',但是沒有看到你的代碼,我們不能告訴你爲什麼。 – abarnert 2013-02-18 20:31:56

0

看起來你正在做的事情是這樣的:

if row['customer_booking_id'] is not None: 

,而你的rowNone本身。你可以發佈你的代碼嗎?

+0

我明白了你的觀點,但這不是我想要的:)我希望如此,如果沒有等於id的行就會打印自定義錯誤消息,不是關於獲取物體的自動化程序。 – OcelotcR 2013-02-18 20:29:53

0

一旦你發現你也可以提出一個自定義錯誤,而不是印刷錯誤:

try: 
    do_something_that_raises_error() 
except TypeError: 
    raise MyCustomError("My Custom Message") 

這裏是一個示例自定義錯誤定義:

class MyCustomError(Exception): 
    def __init__(self, msg): 
     Exception.__init__(self,msg) 
     self.message = msg 
    def __str__(self): 
     return repr(self.message)