2010-10-26 6 views
-1

J'ai besoin d'écrire une expection que si une chaîne est nulle, alors déclenche cette exception. Comment écrire ça?Comment écrire cette exception dans Python 2.6

Par exemple. str = get_str()

si get_str() renvoie Aucun ou rien. Il devrait lever une exception.

+0

probablement vous pouvez utiliser 'raise ValueError (" Input ne peut pas être nul ")' – shahjapan

Répondre

0

Renvoyer Aucun (ce qui équivaut à ne pas retourner explicitement quelque chose) n'est pas une exception en soi. S'il s'agit d'une exception, get_str() devrait déclencher cette exception, et c'est à vous de décider quelle est la bonne raison et donc l'exception correcte. Il peut être ValueError, TypeError ou quelque chose de personnalisé. Par exemple.

def get_str(): 
    x = some_complex_computation() 
    if x is None: 
    raise ValueError("because it's wrong!!") 
    return x 

Cependant, souvent, None sera une valeur de retour valide. Vérifiez-le explicitement une fois que vous avez obtenu la valeur de retour, comme Ignacio le signale, ou utilisez simplement "dactylographie": supposons que vous récupériez une chaîne et que python échoue si ce n'est pas le cas. Par exemple.

str = get_str() 
    if 'foo' in str: 
    print "Looks okay!" 

Si str est None, python échouera à l'expression 'in' avec une exception TypeError.

3

Il n'y a rien de "rien" dans Python. Il y a quelque chose ou il n'y en a pas.

if str is None: 
    raise SomeException() 
+0

+1 pour la philosophie :) –

+0

Pourrions-nous utiliser une sorte d'exception intégrée? – user469652

+0

Absolument. Mais il peut être judicieux d'utiliser une exception personnalisée. –

Questions connexes