Chương trình Giáo dục Kỹ thuật (EngEd) này được hỗ trợ bởi Mục. Triển khai tức thì các container trên nhiều nhà cung cấp đám mây trên toàn cầu Show
Dùng thử miễn phí Xử lý ngoại lệ và lỗi trong Python Ngày 28 tháng 12 năm 2021
Trong những năm qua, Python đã được chấp nhận trong thế giới lập trình vì tính đơn giản và ứng dụng của nó trên nhiều lĩnh vực khác nhau, từ phát triển trò chơi đến phát triển web, khoa học dữ liệu và an ninh mạng. Giới thiệuMặc dù Python rất đơn giản để làm việc, nhưng nó không dễ mắc lỗi. Bất cứ khi nào có lỗi xảy ra trong quá trình thực hiện chương trình. Chương trình sẽ tạm dừng và hiển thị thông báo lỗi "traceback" bao gồm một báo cáo về ngoại lệ được đưa ra Ngoại lệ là các đối tượng đặc biệt quản lý các lỗi phát sinh trong quá trình thực hiện chương trình; . Bài viết này sẽ xem xét một số lỗi nghiêm trọng trong Python và cách xử lý chúng bằng cách sử dụng “khối thử ngoại trừ” điểm chínhĐến cuối bài viết này, người đọc sẽ hiểu các ngoại lệ và cách xử lý chúng trong Python điều kiện tiên quyếtĐể hiểu rõ hơn về bài viết này, người đọc cần có hiểu biết cơ bản về Python và quen làm việc với bất kỳ trình soạn thảo mã nào. Trong bài này sẽ sử dụng notebook Jupyter Mục lụcPython 3 có 63 ngoại lệ được xác định sẵn, với tất cả chúng được sắp xếp để tạo thành một hệ thống phân cấp “kiểu cây”. Một số ngoại lệ này là chung chung trong khi những ngoại lệ khác là cụ thể. Những cái chung bao gồm các ngoại lệ khác bên trong chúng trong khi những cái cụ thể tồn tại độc lập Nguồn Hình ảnh trên cho thấy hệ thống phân cấp ngoại lệ Python Dạng cây bắt đầu từ gốc đi lên. Ở trên cùng của cây này là ngoại lệ chung nhất được gọi là “Ngoại lệ cơ sở”. Sau ngoại lệ cơ sở, những cái tiếp theo trong hệ thống phân cấp này là; Bài viết này sẽ tập trung nhiều hơn vào nhánh “Ngoại lệ” vì hầu hết các lỗi bạn gặp phải trong công việc hàng ngày với Python đều đến từ nhánh này. Trước đó, chúng ta hãy xem xét ngắn gọn về ngắt bàn phím Lỗi ngắt bàn phímLỗi ngắt bàn phím xuất hiện khi người dùng nhấn phím nóng “ctrl-c của ctrl-z”. Lỗi này xuất hiện bất kể người dùng muốn tránh nó đến mức nào và ở bất kỳ giai đoạn thực thi chương trình nào. Chúng tôi sẽ đề cập đến cách xử lý lỗi này trong phần tiếp theo Ngoại lệ PythonLỗi ngoại lệ là nhánh có nhiều lỗi nhất mà bạn sẽ gặp thường xuyên với tư cách là một lập trình viên khi làm việc với Python. Nhánh này được chia thành lỗi thuộc tính, lỗi EOR, lỗi tên, lỗi tra cứu, lỗi hệ điều hành, lỗi loại và giá trị Ở đây, chúng ta sẽ xem xét lỗi thuộc tính, lỗi tên, lỗi kiểu, lỗi số học và các nhánh của nó, sau đó là lỗi tra cứu và các nhánh của nó (lỗi chỉ mục và lỗi khóa) Hình ảnh trên cho thấy nhánh ngoại lệ trong Python Lỗi thuộc tínhLỗi này xảy ra khi bạn gọi một thuộc tính mà một đối tượng hoặc kiểu dữ liệu cụ thể không hỗ trợ. Ví dụ: nếu bạn gọi phương thức 3 trong danh sách, nó sẽ phát sinh lỗi thuộc tính vì danh sách không hỗ trợ phương thức 3Thay vào đó, nó là một phương thức từ điển trả về các khóa của từ điển đã chỉ định. Vì vậy, bất cứ khi nào bạn gặp lỗi thuộc tính, điều đó cho thấy rằng bạn đang sử dụng sai thuộc tính trên một đối tượng hoặc kiểu dữ liệu hạt. Lỗi tênLỗi tên được đưa ra khi một tên biến sai được gọi. Chẳng hạn, nếu tên được gọi chưa được khai báo hoặc khi gọi sai tên hàm Điều này có nghĩa là một biến hoặc hàm chỉ có thể được gọi hoặc sử dụng sau khi được tạo. Lỗi này cũng có thể xảy ra khi bạn xác định một biến trong phạm vi cục bộ và cố gắng truy cập nó trong phạm vi toàn cầu
Hình ảnh trên cho thấy lỗi tên nhận được khi sử dụng sai tên biến. Bạn sẽ gặp lỗi tên khi chạy mã ở trên vì danh sách được tạo được lưu trữ trong biến “Tên” chứ không phải “tên”. Python phân biệt chữ hoa chữ thường, vì vậy nó xem “Tên” và “tên” là hai biến khác nhau, một biến được khai báo còn biến kia không được khai báo Trong hình trên, chúng tôi gặp lỗi tên vì biến được gọi đã được khai báo trong một hàm và chúng tôi đã cố truy cập nó bên ngoài hàm, điều này không được phép trong Python lỗi gõMột lỗi loại được đưa ra khi bạn cố gắng thực hiện một thao tác không được hỗ trợ bởi một đối tượng hoặc chức năng
Chúng tôi đã gán James cho tên biến trong đoạn mã trên và thực hiện phép chia. Thật không may, chúng tôi sẽ nhận được "TypeError" vì "tên" là một chuỗi không hỗ trợ loại hoạt động phân chia đó Hình ảnh trên hiển thị thông báo lỗi loại lỗi số họcLỗi số học xảy ra khi gặp lỗi trong quá trình tính toán số trong Python. Điều này bao gồm Lỗi Zerodivivision và Lỗi dấu phẩy động. Ngoài ra, lỗi chia không tăng lên khi bạn chia một giá trị số bằng không
Khi chúng tôi chạy mã này, chúng tôi sẽ gặp lỗi Zero Division. Trong toán học, điều này được cho là không xác định lỗi tra cứuLỗi tra cứu là lớp cơ sở cho lỗi khóa và lỗi chỉ mục. Lỗi khóa xuất hiện khi sử dụng sai khóa để truy cập giá trị từ điển, tôi. e. , sử dụng khóa không có trong từ điển. Lỗi này có nghĩa là khóa bạn sử dụng để truy cập từ điển bị sai
Trong ví dụ trên, chúng tôi đã chuyển tên “James” để lấy giới tính của James và điều này sẽ trả về lỗi khóa vì khóa được sử dụng không được tìm thấy trong từ điển. Lỗi chỉ mục xuất hiện khi bạn cố gắng truy cập một chuỗi (chỉ mục) của danh sách không tồn tại hoặc nằm ngoài phạm vi
Bạn sẽ gặp lỗi chỉ mục khi chạy mã này vì “4” nằm ngoài phạm vi. Mặc dù có bốn mục trong danh sách chúng tôi đã tạo, Python bắt đầu lập chỉ mục từ 0 để hiển thị khoảng cách của mục danh sách từ đầu danh sách Xử lý ngoại lệTrong phần đầu tiên của bài viết này, chúng tôi đã đề cập đến một số trường hợp ngoại lệ; . Trong phần thứ hai của bài viết này, chúng ta sẽ thảo luận về cách xử lý các ngoại lệ này trong chương trình Python sao cho chương trình sẽ tiếp tục chạy khi gặp các lỗi này Để xử lý các ngoại lệ, Python có bốn thành phần chính được xác định. Hãy thử, ngoại trừ, khác, và cuối cùng Nguồn Hình ảnh trên cho thấy cách bốn thành phần được sử dụng trong xử lý ngoại lệ
Sử dụng các bước trên, chúng tôi sẽ trình bày chi tiết cách xử lý một số ngoại lệ cụ thể trong Python lỗi tra cứu
Trong khối mã ở trên, chúng tôi đã sử dụng ngoại lệ LookupError, ngoại lệ cơ bản cho lỗi khóa và chỉ mục. Do đó, nếu gặp bất kỳ ngoại lệ nào, khối ngoại trừ sẽ được thực thi. Tương tự như vậy, khối khác sẽ được thực hiện nếu không gặp phải khối nào trong số chúng Sử dụng ngoại lệ chung hoặc cơ sở là một bất lợi vì bạn sẽ không biết lỗi cụ thể nào đã được ghi lại. Ví dụ: nếu chúng tôi cố gắng truy cập từ điển bằng cách sử dụng khóa sai trong mã ở trên, chúng tôi sẽ gặp lỗi đó và truy cập nó bằng cách sử dụng chỉ mục sai. Chúng tôi sẽ nhận được lỗi tương tự như hình dưới đây ________số 8_______ Trong đoạn mã trên, chúng tôi đã cố gắng truy cập từ điển chứa danh sách thông tin cá nhân của người lao động. Tuy nhiên, chỉ mục đúng, nhưng khóa sai nên thông báo ngoại lệ sẽ được in. Ngoài ra, nếu chúng tôi cung cấp chỉ mục sai nhưng khóa đúng, ngoại lệ tương tự sẽ được in. Để xử lý các ngoại lệ này một cách riêng biệt, chúng tôi sử dụng các ngoại lệ cụ thể trong khối except của chúng tôi như thế này
Khi bạn chạy mã này và cung cấp một khóa sai, khối ngoại trừ sẽ nắm bắt nó và được thực thi, nhưng nếu bạn cung cấp một chỉ mục sai, khối khác sẽ được thực thi
Bất cứ khi nào một chỉ số sai được sử dụng, chương trình sẽ in “chỉ số sai được sử dụng” Làm việc với nhiều ngoại lệ trong một khối mãPython cung cấp cho bạn nhiều ngoại lệ trong một khối mã. Điều này đơn giản hóa công việc của bạn và tránh sự phát triển mã không thuận lợi trong chương trình của bạn
Nếu khối thử gặp một ngoại lệ như được chỉ định trong khối ngoại trừ đầu tiên, khối đó sẽ xử lý nó. Tương tự như vậy, "ngoại lệ thứ hai" sẽ xử lý nó nếu nó làm tăng ngoại lệ thứ hai. Tuy nhiên, nếu ngoại lệ được đưa ra không được chỉ định bởi một trong hai khối này, thì khối cuối cùng sẽ được thực thi. Mặc dù khối này là tùy chọn, nhưng nó rất cần thiết 0Khi trình thông dịch gặp một ngoại lệ, nó sẽ đi qua các khối ngoại trừ và khi tìm thấy một ngoại lệ phù hợp, nó sẽ thực thi “khối ngoại trừ” cụ thể đó Nếu bạn nhập “0” làm số thứ hai trong mã ở trên, thì khối ngoại trừ đầu tiên sẽ được thực thi và các khối còn lại sẽ bị bỏ qua Xử lý nhiều ngoại lệ trong một khối ngoại trừTrong Python, bạn có thể có một khối except để xử lý nhiều ngoại lệ cùng một lúc. Vấn đề với phương pháp này là “tin nhắn in” giống nhau đối với tất cả các trường hợp ngoại lệ nên khó biết lỗi nào đã xảy ra 1Nếu gặp phải bất kỳ ngoại lệ nào được liệt kê trong dấu ngoặc đơn, câu lệnh in trong khối ngoại trừ sẽ được thực thi, nếu ngoại lệ gặp phải không nằm trong số các ngoại lệ được liệt kê, khối ngoại trừ cuối cùng sẽ được thực thi và nếu không có ngoại lệ trong khối khối cuối cùngTheo tùy chọn, Python cung cấp cho bạn một “khối cuối cùng”. Khối này được thực thi bất kể kết quả của khối thử. Có nghĩa là cho dù trình thông dịch có nắm bắt được các ngoại lệ được đưa ra bởi khối thử trình thông dịch của bạn hay không, thì khối cuối cùng sẽ được thực thi 2Cho dù có hay không một ngoại lệ được nắm bắt trong đoạn mã trên, câu lệnh in “Không có chi” sẽ được in ra Phần kết luậnĐịnh luật Murphy nói rằng bất cứ điều gì sai, sẽ sai. Điều này đúng với Python vì nó không mắc lỗi. Điều quan trọng là phải biết cách xử lý những lỗi này vì không thể tránh được tất cả chúng. Bài viết này đề cập đến một số ngoại lệ chính trong Python và cách xử lý chúng Có bao nhiêu loại ngoại lệ trong Python?Có ba loại lỗi chính có thể phân biệt được trong Python. lỗi cú pháp, ngoại lệ và lỗi logic .
5 loại ngoại lệ trong Python là gì?Ngoại lệ tích hợp 3 loại ngoại lệ là gì?Có ba loại ngoại lệ— ngoại lệ được kiểm tra, lỗi và ngoại lệ thời gian chạy .
3 loại lỗi trong Python là gì?Trong python có ba loại lỗi; . syntax errors, logic errors and exceptions. |