2013-06-18 38 views
8

Tôi đang cố gỡ lỗi, tôi nhận được "không có ngoại lệ được cung cấp" khi chạy nó lúc đầu và sau đó đặt trong khối thử/trừ để in ra bất kỳ lỗi nào.thông báo lỗi rỗng trong python

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

Điều này tạo ra dòng sản phẩm trống, mọi ý tưởng có thể là gì?

EDIT: Rất tiếc, đã hy vọng có lý do cụ thể là thông báo lỗi có thể để trống. Không có đầu ra dấu vết ngăn xếp đó là những gì khiến tôi bị buộc phải làm một khối try/except ở vị trí đầu tiên, tôi vẫn lập trình điều này vì vậy tôi chỉ để cho 'trình biên dịch' nắm bắt các lỗi cho bây giờ. Các mã thực tế đó là ném lỗi là trong một ứng dụng Django vì vậy nó sẽ có một số chức năng từ 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) 

Đây là mã trong hàm xem. jobID là một dict chứa các cặp khóa giá trị theo định dạng ## Selection: ## (ví dụ 17Selection: 17). Xin lỗi tôi đã quên đăng bài này lúc đầu.

EDIT: repr (e) đã cho tôi TypeError() tốt hơn là không biết bất cứ điều gì.

+1

Có lẽ chúng tôi có thể giúp bạn tốt hơn nếu bạn cung cấp cho chúng tôi đầu ra dấu vết ngăn xếp và mã thực tế. –

Trả lời

4

Sau đây tạo ra một dòng trống của đầu ra:

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

Sử dụng repr(e) để xem những gì ngoại trừ là được nuôi dưỡng.

9

Điều này có nghĩa là ngoại lệ không có thư đính kèm. In trừ loại:

print repr(e) 

Bạn cũng có thể muốn in traceback:

import traceback 

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

Bạn muốn tránh bắt BaseException Tuy nhiên, đây không phải là tốt hơn so với một tấm chăn except: tuyên bố. Thay vào đó, hãy bắt các ngoại lệ cụ thể hơn.

1

Đặt khối thử/loại trừ xung quanh các đoạn mã nhỏ hơn cho đến khi bạn tìm thấy dòng vi phạm. Ví dụ, nếu bạn có:

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

Sau đó thay đổi nó để:

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

Thử sử dụng:

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

này có vẻ là dễ nhất để hiểu và cảm.

Các vấn đề liên quan