2013-06-18 7 views
8

Sto tentando di eseguire il debug di un errore, ho ricevuto un "nessuna eccezione fornita" quando l'ho eseguito inizialmente e successivamente ho inserito un blocco try/except per stampare qualunque fosse l'errore.messaggio di errore vuoto in python

try: 
    #some code 
except BaseException, e: 
    print str(e) 

Questo produce una riga vuota di output, qualche idea di cosa potrebbe essere?

EDIT: Spiacente, speravo che esistesse un motivo specifico per cui il messaggio di errore potrebbe essere vuoto. Non vi è alcun output di traccia di stack che è ciò che mi ha costretto a fare una prova/eccetto il blocco in primo luogo, sto ancora programmando questa cosa quindi sto solo lasciando che il 'compilatore' catturi gli errori per ora. Il codice effettivo che genera l'errore è in un'app Django, quindi avrà alcune funzioni da Django.

try: 
    if len(request.POST['dateToRun']) <= 0: 
     dateToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[0] 
    if len(request.POST['timeToRun']) <= 0: 
     timeToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[1] 
except BaseException, e: 
    print str(e) 

Questo è il codice in una funzione di visualizzazione. jobID è un dt contenente coppie di chiavi di valore nel formato ## Selection: ## (ie 17Selection: 17). Mi dispiace, ho dimenticato di postare questo inizialmente.

EDIT: repr (e) mi ha dato TypeError() che è meglio di non sapere nulla.

+1

Forse possiamo aiutarti meglio se ci fornisci l'output di traccia stack e il codice effettivo. –

risposta

4

Quanto segue produce una riga vuota di uscita:

try: 
    raise Exception() 
except BaseException, e: 
    print str(e) 

Usa repr(e) per vedere cosa l'eccezione è che è stata sollevata.

9

Ciò significa che l'eccezione non ha alcun messaggio allegato. Stampa l'eccezione tipo:

print repr(e) 

Si consiglia inoltre di stampare la traceback:

import traceback 

# ... 
except BaseException as e: 
    traceback.print_exc() 

Volete evitano recuperando BaseException tuttavia, questo non è meglio di una coperta except: dichiarazione. Considera invece eccezioni più specifiche.

1

Mettere il blocco try/except attorno a sezioni di codice più piccole finché non si trova la riga incriminata. Ad esempio, se si dispone di:

try: 
    a = fn(b) 
    c = fn(a) 
except BaseException, e: 
    print str(e) 

Poi modificarla in:

a = fn(b) 
try: 
    c = fn(a) 
except BaseException, e: 
    print str(e) 
4

utilizzare:

try: 
    #code 
except BaseExeption as e: 
    print str(e) 

Questo sembra essere il più facile da capire, e affettiva.

Problemi correlati