Có bao nhiêu loại ngoại lệ trong Python

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

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
  • chủ đề
  • mạng

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ệu

Mặ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ục

Python 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

Có bao nhiêu loại ngoại lệ trong Python

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ím

Lỗ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ệ Python

Lỗ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)

Có bao nhiêu loại ngoại lệ trong Python

Hình ảnh trên cho thấy nhánh ngoại lệ trong Python

Lỗi thuộc tính

Lỗ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

name = James
Name / 2
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
name = James
Name / 2
3

Thay 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ên

Lỗ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

Names  =  [James, Peter, June, Jane] 
names.lower()

Có bao nhiêu loại ngoại lệ trong Python

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

Có bao nhiêu loại ngoại lệ trong Python

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

name = James
Name / 2

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 đó

Có bao nhiêu loại ngoại lệ trong Python

Hình ảnh trên hiển thị thông báo lỗi loại

lỗi số học

Lỗ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

number  = 6
ZeroErro = 6 / 0

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

Có bao nhiêu loại ngoại lệ trong Python

lỗi tra cứu

Lỗ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

 gender = { June : female, John : male , Kim: female}
 gender(James)

Có bao nhiêu loại ngoại lệ trong Python

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

name  = [James, Peter, Max, Brown]
print(name[4])

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

Có bao nhiêu loại ngoại lệ trong Python

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

Có bao nhiêu loại ngoại lệ trong Python

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ệ

  1. Thử. Khối thử chỉ định mã để “thử” cho một ngoại lệ
  2. Ngoại trừ. Với ngoại lệ, bạn chỉ định ngoại lệ dự kiến ​​mà bạn muốn khối thử của mình tìm kiếm và thông báo bạn muốn hiển thị nếu trường hợp này bị phát hiện
  3. Khác. Khối này chứa mã mà bạn sẽ muốn thực thi nếu khối ngoại trừ không bắt được ngoại lệ. Hãy coi đây là một bảng nối đa năng/mã mùa thu
  4. Cuối cùng. Khối mã này được thực thi bất kể điều gì xảy ra trong các khối trên

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

try:
      details =  [{'name':'James', 'gender':'male','age': 23},
                 {'name' : 'Peter','gender': 'male', 'age': 35},
                 {'name':'Jane', 'gender' : 'female', 'age':29}]
except  LookupError:
    print('Wrong key used')
else:
    print(Thank you)

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

try:
      details =  [{'name':'James', 'gender':'male','age': 23},
                 {'name' : 'Peter','gender': 'male', 'age': 35},
                 {'name':'Jane', 'gender' : 'female', 'age':29}]
except  KeyError:
    print('Wrong key used')
else:
    print(Thank you)

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

try:
    countries = [USA, China, UK, Nigeria, South Korea]
except  IndexError:
    print(wrong Index used)
else:
    print(You are welcome)

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

try:
  :
except  first exception:
  :
except second exception:
  :
except: 

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

name = James
Name / 2
0

Khi 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

name = James
Name / 2
1

Nế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ùng

Theo 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

name = James
Name / 2
2

Cho 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.