Comment arrêter de fumer fonction Python, jetant erreur de déclaration, sans quitter l'interpréteur Python
Je suis nouveau sur Python et en proie à la manipulation de l'auto-défini erreurs. Lors de mon code spots de l'erreur, je veux lever une erreur en rouge de la police et de me ramener à l'Python terminal sans tuer Python.
Je suis tombé sur sys.exit() la recherche d'une réponse, mais il se ferme Python complètement. Connaissez-vous une alternative qui jette en arrière une erreur en caractères rouges et me ramène à la borne?
C'est ce que j'ai jusqu'à présent.
import sys
def do_something(parameter):
if parameter > 100:
# quit the function and any function(s) that may have called it
sys.exit('Your parameter should not be greater than 100!')
else:
# otherwise, carry on with the rest of the code
S'il vous plaît laissez-moi savoir si je ne suis pas clair et je serai heureux de vous fournir plus de détails. Merci à tous par avance!
Voir si
print(error_msg)
et puis exit(1)
œuvres. Je suis sur un appareil mobile pour le moment je ne suis pas sûr!OriginalL'auteur Gyan Veda | 2014-03-02
Vous devez vous connecter pour publier un commentaire.
Vous avez deux options (au moins).
À l'aide d'un
return
déclaration:Vous pouvez également
return soemthing
passage de lasomething
valeur à l'appelant. Ceci peut être utilisé pour fournir un code d'état de l'instance (par exemple 0: le succès, l'1: erreur).Ou une meilleure approche est de
raise
une exception:Voir exceptions dans le Python manuel.
Il sont intégrés dans des classes d'exception (comme
ValueError
ci-dessus). Vous pouvez également définir vos propres comme suit:Vous pouvez également ajouter du code personnalisé des classes d'exception pour les paramètres du procédé, l'affichage de messages d'erreur personnalisés, etc...
Intégré dans les exceptions sont énumérées ici.
return
ne retourne à l'appelant, qui n'est pas nécessairement le REPL. Comme pour les exceptions, ils peuvent (et sont souvent) pris.Hein? La réponse est toujours "
return
ou lever une exception", et mes objections à la fois.Je pense que vous êtes l'interprétation de la question, bien au-delà de l'OP de l'intention.
OriginalL'auteur isedev
Définir une exception personnalisée, et de l'augmenter.
(même si en fait, maintenant que j'y pense, vous pouvez simplement utiliser un haut-exception: ValueError semble approprié).
try: ... except Exception: ...
mais pourquoi aurait-il quelqu'un de faire quelque chose comme ça 🙂
Peut-être par ignorance (je vois beaucoup de débutants de faire juste
except:
), peut-être parce qu'ils ont vraiment envie de l'attraper tous les exception de quelques égarés sens de la "fiabilité" (parfois vus intermédiaires les programmeurs), peut-être parce que la capture de (presque) toutes les exceptions est vraiment la bonne chose à faire en ce moment, par exemple, vous êtes en cours d'exécution arbitraire de code (par exemple, un crochet) et ont besoin d'être robuste aux erreurs dans le code.OriginalL'auteur Daniel Roseman