Je souhaite quitter une fonction lorsqu'une exception se produit. Je veux utiliser une autre méthode que 'return'Sortir d'une fonction en Python
Répondre
Impossible de penser à une autre façon de "sortir" d'une fonction autre que a) de retour, b) de lancer une exception, ou c) de terminer l'exécution du programme .
La classe c) est une sous-classe de b): raise SystemExit – jfs
Je parlais plutôt de terminer le processus (manuellement depuis l'extérieur du programme?). Bon point cependant. –
Si vous attrapez une exception et que vous voulez alors réémettre il, this pattern est assez simple:
try:
do_something_dangerous()
except:
do_something_to_apologize()
raise
Bien sûr, si vous voulez augmentation l'exception en premier lieu, c'est facile aussi:
def do_something_dangerous(self):
raise Exception("Boo!")
Si ce n'est pas ce que vous vouliez, s'il vous plaît fournir plus d'informations!
L'exception se mettra fin à la fonction:
def f():
a = 1/0 # will raise an exception
return a
try:
f()
except:
print 'no longer in f()'
Juste, on l'imagine certainement. Ce qui m'amène à me demander quelle est la question originale/vraiment/demandant ... –
En supposant que vous voulez à l'exécution « stop » à l'intérieur de cette méthode. Il y a quelques choses que tu peux faire.
- Ne pas intercepter l'exception. Cela retournera le contrôle à la méthode qui l'a appelé en premier lieu. Vous pouvez alors faire ce que vous voulez avec.
- sys.exit (0) Celui-ci quitte réellement le programme entier.
- retour Je sais que vous avez dit que vous ne voulez pas retourner, mais écoutez-moi. Le retour est utile, car basé sur la valeur que vous retournez, ce serait un bon moyen de faire savoir à vos utilisateurs ce qui n'a pas fonctionné.
Comme d'autres l'ont souligné, une exception vous sortira de la méthode. Vous ne devriez pas avoir honte ou être gêné par des exceptions; une exception indique une erreur , mais ce n'est pas nécessairement la même chose qu'un bug. Par exemple, disons que j'écris une fonction factorielle. Par exemple, par exemple, j'écris une fonction factorielle. Factoriel n'est pas définie pour les nombres négatifs, donc je pourrais le faire:
def factorial(n):
if n < 0:
raise ValueError
if n == 0:
return 1
return n*factorial(n-1)
Je voudrais ensuite chercher l'exception:
n = raw_input('Enter a number.')
try:
print factorial(n)
except ValueError:
print 'You entered a negative number.'
Je peux faire l'exception plus d'information qu'un ValueError en définissant mon propre:
class NegativeInputError(Exception):
pass
# in the function:
if n < 0:
raise NegativeInputError
HTH!
- 1. ne pouvait pas sortir de la boucle python
- 2. informations semblant sortir de mysqldb incorrectement, python django
- 3. Construit en fonction de hachage python()
- 4. Comment bande décorateurs d'une fonction en python
- 5. Python curses.ascii en fonction des paramètres régionaux?
- 6. définitions de fonction Rediriger en python
- 7. Aide - Pointeurs de fonction en Python
- 8. Pour chaque fonction en classe dans python
- 9. python: fonction timeit() lente
- 10. Fonction de comparaison en Python en utilisant lambdas
- 11. PHP - Sortir d'un cadre
- 12. Jquery: Div Fade et sortir
- 13. Imprimer la liste des paramètres de la fonction en Python
- 14. Que fait cette fonction en Python impliquant urllib2 et BeautifulSoup?
- 15. Comment retourner plus d'une valeur d'une fonction en Python?
- 16. Emacs defadvice sur la fonction en mode python
- 17. Appeler une fonction avec une liste d'arguments en python
- 18. fonction similaire à str_replace de php en python?
- 19. ctypes en python, problème appelant une fonction dans une DLL
- 20. Impossible de faire une fonction décimale itérables en Python
- 21. équivalent Java de mappage de fonction en Python
- 22. Où sortir copie dans setter?
- 23. Comment sortir XML dans Log4Net
- 24. Sortir vers un fichier texte
- 25. Python, rediriger le flux de Popen vers une fonction python
- 26. Obtenir le nom de la fonction appelant dans une autre fonction en Python?
- 27. Héritage Python - comment désactiver une fonction
- 28. Dictionnaire en minuscules en Python
- 29. Ctypes Python et pointeurs de fonction
- 30. fonction readline Python pyserial mauvaise utilisation
Veuillez fournir le code. –