J'ai un comportement extrêmement étrange qui semble entraîner des exceptions silencieuses. Comment puis-je écrire un essai général où je peux déboguer toutes les exceptions. Quelque chose du genre:
try:
# something that fails
except e:
print e
Un peu plus sur le problème en question en détail:
J'ai une application Django qui sur mon ordinateur (Ubuntu Linux 8.10) fonctionne bien à la fois via runserver et mod-python. Sur le serveur de déploiement (Ubuntu Linux 8.10), cela fonctionne correctement via runserver, mais échoue via apache en mod-python.
J'ai réduit la cause à une partie de l'application qui utilise Berkeley DB (bsddb.db) et des clés secondaires. La méthode de rappel pour les clés secondaires utilise pickle pour formater les clés. Cela échoue lorsque j'appelle pickle sur une seule valeur. Cependant, cela échoue uniquement lorsque j'utilise cPickle et que l'utilisation de pickle sur les mêmes valeurs en dehors de la fonction de rappel fonctionne également.
Je veux juste savoir pourquoi cela échoue avec cPickle.
Le module de traceback est assez utile pour formater les traces. Vous pouvez ensuite l'écrire dans un fichier journal.
la source
Est-ce que ça marche? :
except BaseException, e:
la source
BaseException
- cela inclutSystemExit
etKeyboardInterrupt
, des choses que vous ne voulez généralement pas attraper.