2013-02-18 78 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)