2013-06-18 45 views
8

Bir hata ayıklamak çalışıyorum, ben başlangıçta koştuğumda bir "istisna sağlanan" aldım ve daha sonra hata ne olursa olsun yazdırmak için bir try/except bloğu koydu.python boş hata iletisi

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

Bu, boş bir çıktı satırı üretir, ne olabileceği hakkında herhangi bir fikir üretir?

DÜZENLEME: Üzgünüz, hata iletisinin boş olabileceğinin belirli bir nedeni olduğunu umuyordum. İlk olarak bir try/except bloğu yapmak zorunda kalmamı sağlayan yığın izi çıktısı yok, ben hala bu şeyi programlıyorum, bu yüzden 'derleyici' hataların şimdilik yakalanmasını sağlıyorum. Hatayı atan gerçek kod Django uygulamasındadır, bu yüzden Django'dan bazı işlevler olacaktır.

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) 

Bu, görünüm işlevindeki koddur. jobIDs, ## Seçim: ## (yani 17Selection: 17) biçimindeki değer anahtar çiftlerini içeren bir dikdörtgendir. Üzgünüm, ilk önce bunu yazmayı unuttum.

DÜZENLEME: repr (e) bana hiçbir şey bilmemekte daha iyi olan TypeError() vermiştir.

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

Kullanım repr(e) istisna olduğu büyüdü ne olduğunu görmek için:

+1

Bize yığın iz çıktı ve gerçek kod verirseniz, size daha iyi yardımcı olabiliriz. –

cevap

4

şu çıktısının bir boş satır üretir.

9

Bu durum istisnanın ekli iletiye sahip olmadığı anlamına gelir.

print repr(e) 

Ayrıca Traceback yazdırmak isteyebilirsiniz:

import traceback 

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

istiyorsun önlemekBaseException ancak bu bir battaniye except: deyimi daha iyi olmayan alıcı istisnası tip yazdırın. Bunun yerine daha özel istisnalar yakalayın.

1

Deneme satırını buluncaya kadar try/except bloğunu küçük kod bölümlerinin etrafına yerleştirin. Örneğin, varsa:

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

Sonra olarak değiştirin:

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

kullanmayı deneyin:

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

Bunu anlamak için en kolay ve etkili gibi görünüyor.

İlgili konular