Dovendo fare un lavoro di analisi in cui l'errore è sempre dietro l'angolo (tranquilli, niente da mandare in produzione), sto riempiendo il mio codice di cose tipo
try: ... except: import ipdb; ipdb.set_trace() Tipicamente, intervenendo con ipdb riesco a risolvere il problema e poi a dare "continue". Ho pensato di fare il passo successivo: avviare ipdb ad ogni uncaught Exception. Ho trovato http://code.activestate.com/recipes/65287/ , e sostituito "pdb" con "ipdb". Ma c'è un problema: ipdb parte sì, ma quando poi do "continue" non mi esegue il codice successivo. Se poi sostituisco "pm()" con "set_trace()", il "continue" mi dà pure errore. Ciò mi fa pensare che sys.excepthook non sia quello che mi serve (e in effetti la documentazione¹ dice "this happens just before control is returned to the prompt"). Qualcuno ha consigli migliori? Il problema di un unico try... except globale è chiaramente che io vorrei lavorare là (nella funzione) dove l'errore nasce. Per riprodurre, potete usare ----8<--------8<--------8<--------8<--------8<--------8<--------8<---- def prova(): i = "a" print int(i) print "vado avanti" prova() ----8<--------8<--------8<--------8<--------8<--------8<--------8<---- Idealmente, facendolo girare dovrei: - ottenere un'exception a causa del casting a int, e quindi avviare ipdb - essere in grado di appurare, dall'interno del debugger, che "i" vale "a" - fare eseguire il secondo print ciao Pietro ¹ http://docs.python.org/2/library/sys.html _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python