Định Nghĩa Của Từ ” Trace Back Là Gì, Nghĩa Của Từ To Trace Back To

Python in một traceback khi có một exception đc gây lên khi chạy code của bạn. Traceback được in ra có thể gây choáng ngợp nếu lần đầu nhìn thấy hoặc bạn cũng không thể hiểu nó ghi nội dung gì mà tìm lỗi để sửa. Nhưng Python traceback có rất nhiều thông tin có thể giúp bạn suy đoán và khắc phục lý do exception gây ra trong code của bạn. Hiểu được thông tin của một Python traceback sẽ giúp bạn code dễ dàng hơn

1. Vậy Python traceback là gì ?

Một traceback là một báo cáo chứa các hàm được thực hiện trong code của bạn tại một thời điểm cụ thể. Traceback được biết đến với nhiều tên, bao gồm stack trace, strack traceback, backtrace, … Khi kết quả của chương trình của bạn là 1 exception, Python sẽ in ra traceback lập tức để giúp bạn biết bạn sai ở đâu. Dưới đây là ví dụ:

# example.pydef greet(someone): print(“Hello, ” + someon)greet(“Chad”)$ python example.pyTraceback (most recent call last): File “/path/to/example.py”, line 4, in greet(“Chad”) File “/path/to/example.py”, line 2, in greet print(“Hello, ” + someon)NameError: name “someon” is not definedTraceback in ra có tất cả các thông tin bạn sẽ cần để giải quyết lỗi này. Ở dòng cuối của traceback sẽ nói cho bạn loại exception được gây lên với một số thông tin về lỗi đó. Các dòng trước đó chỉ ra code dẫn đến lỗi. Ở traceback trên, exception tên là NameError, với ý nghĩa có liên quan đến tên (variable, function, class) không được định nghĩa. Trong trường hợp này là tên someon

2. Đọc một python traceback như thế nào ?

Python traceback bao gồm nhiều thông tin hữu ích khi bạn cố xác định lý do cho 1 exception gây lên trong code. Trong phần này bạn sẽ đi qua các tracebacks khác nhau để hiểu những thông tin khác nhau của chúng.

Đang xem: Trace back là gì

Python Traceback Overview

Có một số phần cho mỗi lần truy xuất Python rất quan trọng. Sơ đồ dưới đây nêu bật các phần khác nhau:

*

Trong Python, cách tốt nhất để đọc traceback là từ dưới lên trên

màu lam: dòng cuối của traceback là dòng thông báo lỗi, nó bao gồm tên exceptionmàu xanh lục: sau tên exception là thông báo lỗi, thông báo thường gồm thông tin hứu ích giúp hiểu lý do gây ra lỗimàu vàng: chia làm các line của các hàm liên quan. Mỗi dòng bao gồm thông tin như tên file, số dòng, tên module, chỉ định rõ code bạn có thể tìmmàu đỏ: dòng thứ 2 của mỗi line trên , chỉ chính xác code thực thi như thế nào3. Một số Tracebacks phổ biến trong python

Biết cách đọc một traceback khi bị gây ra exception và đặc biệt nhận biết các traceback phổ biến sẽ giúp bạn tăng tốc trong quá trình xử lý exceptionDưới đây là một số trường hợp ngoại lê phổ biến bạn có thể gặp phải, nguyên nhân gây ra, ý nghĩa như thế nào

AttributeError

AttributionError được gây lên khi bạn cố truy cập một thuộc tính trên một đối tượng không có thuộc tính đó được xác định. Tài liệu Python xác định khi exception này được nêu ra:

Hầu hết thời gian, nhận được ngoại lệ này cho thấy rằng bạn có thể đang làm việc với một đối tượng không phải là loại bạn đang mong đợi:

ImportError

ImportError được nêu ra khi có sự cố xảy ra với câu lệnh nhập. Bạn có thể nhận được exception hoặc subclass ModuleNotFoundError của nó, nếu module bạn đang cố nhập có thể được tìm thấy hoặc nếu bạn cố gắng nhập một cái gì đó từ module không tồn tại.

IndexError

IndexError được gây ra khi cố lấy index từ 1 list hoặc tuple, index không được tìm thấy

Raised when a sequence subscript is out of rangeVí dụ

KeyError

Giống IndexError, KeyError được gây lên khi cố truy cập 1 key mà không mapping , thường là dict.

Xem thêm: Từ Điển Anh Việt ” Make It Up Là Gì ? Make Up Là Gì

NameError

NameError được gây ra khi bạn đã tham chiếu một biến, module, class, function hoặc một số tên khác đã được định nghĩa trong code của bạn. Tài liệu Python xác định khi ngoại lệ này được nêu ra:

SyntaxError

TypeError

TypeError được gây lên khi code của bạn cố gắng làm điều gì đó với một đối tượng không cho phép làm điều đó, chẳng hạn như cố gắng thêm một chuỗi vào một số nguyên hoặc gọi len () trên một đối tượng trong đó độ dài của nó được xác định.

Xem thêm: Công Cụ Tính Lương Gross Và Net Là Gì ? Lương Nào Lợi Hơn? Phân Biệt Lương Gross Và Net Để Hr Không Qua Mặt

ValueError

ValueError được gây lên khi giá trị của đối tượng không chính xác. Bạn có thể coi đây là một IndexError được nâng lên vì giá trị của chỉ mục là giá trị trong phạm vi của chuỗi, chỉ có ValueError là dành cho trường hợp chung hơn.

# urlcaller.pyimport sysimport requestsresponse = requests.get(sys.argv<1>)print(response.status_code, response.content)python urlcaller.py http://thisurlprobablydoesntexist.com…During handling of the above exception, another exception occurred:Traceback (most recent call last): File “urlcaller.py”, line 5, in response = requests.get(sys.argv<1>) File “/path/to/requests/api.py”, line 75, in get return request(“get”, url, params=params, **kwargs) File “/path/to/requests/api.py”, line 60, in request return session.request(method=method, url=url, **kwargs) File “/path/to/requests/sessions.py”, line 533, in request resp = self.send(prep, **send_kwargs) File “/path/to/requests/sessions.py”, line 646, in send r = adapter.send(request, **kwargs) File “/path/to/requests/adapters.py”, line 516, in send raise ConnectionError(e, request=request)requests.exceptions.ConnectionError: HTTPConnectionPool(host=”thisurlprobablydoesntexist.com”, port=80): Max retries exceeded with url: / (Caused by NewConnectionError(“: Failed to establish a new connection: Name or service not known”,))Gặp lỗi , nhanh trong xử dụng try except để bắt các exception ghi vào log

import loggingimport sysimport requestslogger = logging.getLogger(__name__)try: response = requests.get(sys.argv<1>)except requests.exceptions.ConnectionError as e: logger.exception() print(-1, “Connection Error”)else: print(response.status_code, response.content)

Related Posts