我想提出一個檢查,看看閹SQLite中的字段有顧客預訂ID - 如果這樣做,將返回該行,等等等等。但是,如果他們不我得到以下錯誤防止錯誤消息?
TypeError: 'NoneType' object has no attribute '__getitem__'
我知道這意味着什麼,什麼都沒有。 但我想知道如果有一種方法來防止錯誤,而是把消息放在那裏?
我想提出一個檢查,看看閹SQLite中的字段有顧客預訂ID - 如果這樣做,將返回該行,等等等等。但是,如果他們不我得到以下錯誤防止錯誤消息?
TypeError: 'NoneType' object has no attribute '__getitem__'
我知道這意味着什麼,什麼都沒有。 但我想知道如果有一種方法來防止錯誤,而是把消息放在那裏?
您可以隨時捕獲的錯誤,如果你知道如何處理它:
try:
do_something_that_raises_error()
except TypeError:
print("database doesn't have correct info")
sys.exit(1)
看起來你正在做的事情是這樣的:
if row['customer_booking_id'] is not None:
,而你的row
是None
本身。你可以發佈你的代碼嗎?
我明白了你的觀點,但這不是我想要的:)我希望如此,如果沒有等於id的行就會打印自定義錯誤消息,不是關於獲取物體的自動化程序。 – OcelotcR 2013-02-18 20:29:53
一旦你發現你也可以提出一個自定義錯誤,而不是印刷錯誤:
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)
嘿,感謝迅速答覆 - 我嘗試使用這個,但它仍然給錯誤?任何進展? :) – OcelotcR 2013-02-18 20:30:11
我不明白這是怎麼可能的,除非你把try/except放在一段錯誤的代碼中。 – mgilson 2013-02-18 20:31:16
@CharlieSay:除非您向我們展示嘗試它的代碼以及您得到的錯誤和追溯,否則這些信息沒有用。如果你編寫了這個代碼,那麼你當然不會在這個時候得到一個'TypeError'。你可能會在這裏得到一個_different_錯誤,或者你可能從'try'之外的其他代碼中得到'TypeError',但是沒有看到你的代碼,我們不能告訴你爲什麼。 – abarnert 2013-02-18 20:31:56