Gestion des erreurs dans PythonBox

Aperçu

À propos de la gestion des erreurs lors du développement d'applications PEPPER Un résumé de la façon de gérer avec PythonBox.

Ceci est un article de diversion de notre blog Utage.

http://utage.headwaters.co.jp/blog/?p=4656

Méthode de gestion des erreurs

Lorsqu'une erreur se produit dans PythonBox En cas d'erreur non gérée, l'application se terminera immédiatement.

Actuellement, si le robot est arrêté de force, Il semble à l'utilisateur que cela s'est terminé soudainement sans aucun avertissement, donc Assurez-vous de le manipuler et de le dire à l'utilisateur.

En cas d'erreur détectée par Choregraphe, La case dans laquelle l'erreur s'est produite devient rouge. C'est également le cas avec SyntaxError et ainsi de suite.

ss1.png

Il existe plusieurs façons de gérer les erreurs dans PythonBox, donc Je vais expliquer ces méthodes.

  1. try, except

Comme la gestion des erreurs en Python général Vous pouvez gérer l'erreur en l'écrivant avec try: except:.

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
 
    def onLoad(self):
        pass
 
    def onUnload(self):
        pass
 
    def onInput_onStart(self):
        try:
            raise Exception, "Raise Error."
        except Exception as e:
            self.log(str(e))
 
    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

Dans l'exemple ci-dessus, il s'agit simplement de cracher des journaux, Je ne peux rien couvrir, mais c'est le processus que je fais en essayant L'application ne plantera pas même si une exception se produit.

Dans le cas d'une utilisation réelle, je pense qu'il sera utilisé plus souvent comme suit.

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
 
    def onLoad(self):
        pass
 
    def onUnload(self):
        pass
 
    def onInput_onStart(self):
        try:
            #Traitement pouvant provoquer une erreur
            self.onSucceeded()
        except Exception:
            self.onFailed()
 
    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

En changeant la sortie lorsqu'elle est augmentée comme ci-dessus Vous pouvez gérer les erreurs dans PythonBox.

2. Utilisez les fonctionnalités standard de PythonBox

Ajout de la sortie onError sur l'écran Edit Box

ss2.png

ss3.png

Si tu fais ça Il sera généré à partir de la sortie onError lorsqu'une exception se produit dans PythonBox.

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
 
    def onLoad(self):
        pass
 
    def onUnload(self):
        pass
 
    def onInput_onStart(self):
        raise Exception, "Raise Error."
 
    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

De plus, en définissant le Type de onError sur une chaîne de caractères, Vous pouvez générer des arguments tels que le message d'erreur de l'exception levée sous forme de chaîne de caractères.

Recommended Posts

Gestion des erreurs dans PythonBox
Gestion des erreurs de trame principale
Erreur dans random.shuffle
Gestion des erreurs Python
Erreur dans Pyinstaller
Gestion des erreurs SikuliX
Erreur dans TensorBoard
django.db.migrations.exceptions.InconsistentMigrationHistory Gestion des erreurs
À propos de la gestion des erreurs Tweepy
Manipulation de json en python
Comment gérer l'hexadécimal en Python3
Gestion des erreurs GraphQL (gqlgen)
Autour de la gestion des erreurs de feedparser
erreur zipimporter dans la pyramide
Comment installer la poésie (gestion des erreurs) dans l'environnement zsh
[Contre-mesures d'erreur] Gestion des erreurs d'installation de django-heroku
À propos de FastAPI ~ Gestion des erreurs de point de terminaison ~
Erreur de multitraitement dans Jupyter Notebook
Gestion des devis en [bash]
Gestion des matrices clairsemées dans Scipy
Mémorandum de gestion des erreurs de construction PyCUDA
Traitement des URL relatives en python
Problème de solveur Erreur dans la poésie
Erreur divisée par 0 Gestion de ZeroDivisionError
Gestion des fichiers JSON en Python
Gestion des fuseaux horaires en Python (datetime, pytz)
Une erreur s'est produite dans l'imputer de scikit-learn
Correction d'une erreur manquante de setuptools dans anaconda
Gestion des erreurs lors de la mise à jour de Fish shell
Comment supprimer l'erreur d'affichage dans matplotlib
Gestion des codes de caractères des fichiers en IronPython
L'histoire d'une erreur dans PyOCR
Dans pip install clang: erreur: argument inconnu: '- mno-fused-madd'
Gestion des erreurs lors de la migration de Django'DIRS ': [BASE_DIR /' templates ']
Erreur [Python d'instruction matérielle illégale] dans PyMC3
Résoudre l'erreur d'adresse déjà utilisée
J'enregistre en UTF-8, mais une erreur de syntaxe
Erreur de clé de dictionnaire → Résoudre avec la clé dans le dictionnaire
Solution pour l'erreur d'exécution dans OpenVINO IEPlugin.load ()
Exemple de gestion des fichiers eml en Python
Importation de modules et gestion des exceptions en python
Erreur d'importation: aucun module nommé "xxxxxx" dans Python3