bạn có thể tạo móc ngoại lệ của riêng mình trong python. dưới đây là ví dụ về mã mà tôi đang sử dụng.
import sys
import traceback
def exceptionHandler(got_exception_type, got_exception, got_traceback):
listing = traceback.format_exception(got_exception_type, got_exception, got_traceback)
# Removing the listing of statement raise (raise line).
del listing[-2]
filelist = ["org.python.pydev"] # avoiding the debuger modules.
listing = [ item for item in listing if len([f for f in filelist if f in item]) == 0 ]
files = [line for line in listing if line.startswith(" File")]
if len(files) == 1:
# only one file, remove the header.
del listing[0]
print>>sys.stderr, "".join(listing)
Và bên dưới là một số dòng mà tôi đã sử dụng trong mã ngoại lệ tùy chỉnh của mình.
sys.excepthook = exceptionHandler
raise Exception("My Custom error message.")
Trong trường hợp ngoại lệ, bạn có thể thêm tên tệp hoặc tên mô-đun vào danh sách "tên tệp" nếu bạn muốn bỏ qua bất kỳ tệp không mong muốn nào. Như tôi đã bỏ qua các mô-đun python pydev kể từ khi tôi đang sử dụng trình gỡ lỗi pydev trong nhật thực.
Ở trên được sử dụng trong mô-đun của riêng tôi cho một mục đích cụ thể. bạn có thể sửa đổi và sử dụng nó cho các mô-đun của bạn.
Nguồn
2016-11-25 07:12:11
Đường dây nâng cao bị ẩn khi được tăng từ mã C đã biên dịch (vì không có đường nâng để hiển thị). Các phần Python của các thư viện chuẩn sẽ vẫn hiển thị câu lệnh nâng cao trong một traceback. –
Có lẽ bạn có thể hack 'sys.excepthook' để loại trừ dòng cuối cùng nếu nó là' nâng cao'. Nhưng nói chung là không thể, làm quen với nó. – delnan
Bạn luôn có thể đưa ra một ngoại lệ hữu ích. –