Những lỗi nào được bắt bởi trình thông dịch python?

Python cung cấp hai tính năng rất quan trọng để xử lý bất kỳ lỗi không mong muốn nào trong các chương trình Python của bạn và để thêm khả năng sửa lỗi trong đó –

  • Xử lý ngoại lệ - Điều này sẽ được đề cập trong hướng dẫn này. Đây là danh sách Ngoại lệ tiêu chuẩn có sẵn trong Python. Ngoại lệ tiêu chuẩn

  • Xác nhận - Điều này sẽ được đề cập trong hướng dẫn Xác nhận trong Python

Danh sách các ngoại lệ tiêu chuẩn -

Sr. KHÔNG. Tên ngoại lệ & Mô tả1

Ngoại lệ

Lớp cơ sở cho tất cả các ngoại lệ

2

Dừng lặp lại

Xảy ra khi phương thức next() của iterator không trỏ đến bất kỳ đối tượng nào

3

Thoát khỏi hệ thống

Lớn lên bởi hệ thống. chức năng thoát ()

4

ChuẩnLỗi

Lớp cơ sở cho tất cả các ngoại lệ dựng sẵn ngoại trừ StopIteration và SystemExit

5

Số họcLỗi

Lớp cơ sở cho tất cả các lỗi xảy ra khi tính toán số

6

lỗi tràn

Tăng lên khi một phép tính vượt quá giới hạn tối đa cho một loại số

7

Lỗi dấu phẩy động

Tăng lên khi tính toán dấu phẩy động không thành công

8

ZeroDivisionLỗi

Tăng lên khi phép chia hoặc modulo cho 0 diễn ra cho tất cả các loại số

9

Khẳng địnhLỗi

Tăng lên trong trường hợp thất bại của câu lệnh Assert

10

Lỗi thuộc tính

Tăng trong trường hợp tham chiếu hoặc gán thuộc tính không thành công

11

EOFLỗi

Xảy ra khi không có đầu vào từ hàm raw_input() hoặc input() và đến cuối tệp

12

Nhập Lỗi

Tăng lên khi một câu lệnh nhập không thành công

13

Bàn PhímNgắt

Xảy ra khi người dùng làm gián đoạn quá trình thực thi chương trình, thường bằng cách nhấn Ctrl+c

14

Tra cứuLỗi

Lớp cơ sở cho tất cả các lỗi tra cứu

15

Chỉ mụcLỗi

Xảy ra khi không tìm thấy chỉ mục trong chuỗi

16

Lỗi chính

Xảy ra khi không tìm thấy khóa được chỉ định trong từ điển

17

TênLỗi

Xảy ra khi không tìm thấy mã định danh trong không gian tên cục bộ hoặc toàn cầu

18

UnboundLocalError

Xảy ra khi cố gắng truy cập một biến cục bộ trong một hàm hoặc phương thức nhưng không có giá trị nào được gán cho nó

19

Môi trườngLỗi

Lớp cơ sở cho tất cả các ngoại lệ xảy ra bên ngoài môi trường Python

20

Lỗi IO

Xảy ra khi thao tác nhập/xuất không thành công, chẳng hạn như câu lệnh in hoặc hàm open() khi cố mở một tệp không tồn tại

21

Lỗi IO

Tăng lên cho các lỗi liên quan đến hệ điều hành

22

Lỗi cú pháp

Xảy ra khi có lỗi trong cú pháp Python

23

Lỗi thụt đầu dòng

Tăng lên khi thụt đầu dòng không được chỉ định đúng cách

24

Lỗi hệ thống

Xảy ra khi trình thông dịch tìm thấy sự cố nội bộ, nhưng khi gặp lỗi này, trình thông dịch Python không thoát

25

Thoát khỏi hệ thống

Xảy ra khi thoát trình thông dịch Python bằng cách sử dụng sys. chức năng thoát (). Nếu không được xử lý trong mã, khiến trình thông dịch thoát

26

LoạiLỗi

Xảy ra khi một hoạt động hoặc chức năng được thử không hợp lệ đối với loại dữ liệu đã chỉ định

27

Giá trịError

Xảy ra khi hàm tích hợp sẵn cho một loại dữ liệu có loại đối số hợp lệ, nhưng các đối số có giá trị không hợp lệ được chỉ định

28

Lỗi runtime

Xảy ra khi lỗi được tạo không thuộc bất kỳ danh mục nào

29

NotImplementedLỗi

Xảy ra khi một phương thức trừu tượng cần được triển khai trong một lớp kế thừa không thực sự được triển khai

Khẳng định trong Python

Một xác nhận là một kiểm tra độ chính xác mà bạn có thể bật hoặc tắt khi bạn hoàn thành việc kiểm tra chương trình của mình

Cách dễ nhất để nghĩ về một khẳng định là so sánh nó với một câu lệnh nâng cao nếu (hoặc chính xác hơn, một câu lệnh nâng cao nếu không). Một biểu thức được kiểm tra và nếu kết quả trả về là sai, một ngoại lệ sẽ được đưa ra

Các xác nhận được thực hiện bởi câu lệnh khẳng định, từ khóa mới nhất của Python, được giới thiệu trong phiên bản 1. 5

Các lập trình viên thường đặt các xác nhận khi bắt đầu một hàm để kiểm tra đầu vào hợp lệ và sau khi gọi hàm để kiểm tra đầu ra hợp lệ

Tuyên bố khẳng định

Khi gặp một câu lệnh khẳng định, Python sẽ đánh giá biểu thức đi kèm, điều này hy vọng là đúng. Nếu biểu thức là sai, Python sẽ đưa ra một ngoại lệ AssertionError

Cú pháp để khẳng định là -

assert Expression[, Arguments]

Nếu xác nhận không thành công, Python sử dụng ArgumentExpression làm đối số cho AssertionError. Các ngoại lệ AssertionError có thể bị bắt và xử lý giống như bất kỳ ngoại lệ nào khác bằng cách sử dụng câu lệnh try-ngoại trừ, nhưng nếu không được xử lý, chúng sẽ chấm dứt chương trình và tạo ra một truy nguyên

Ví dụ

Đây là một chức năng chuyển đổi nhiệt độ từ độ Kelvin sang độ F. Vì 0 độ Kelvin càng lạnh càng tốt, nên chức năng này sẽ ngừng hoạt động nếu nó thấy nhiệt độ âm -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -

32.0
451
Traceback (most recent call last):
File "test.py", line 9, in 
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!

Ngoại lệ là gì?

Một ngoại lệ là một sự kiện, xảy ra trong quá trình thực thi chương trình làm gián đoạn luồng hướng dẫn bình thường của chương trình. Nói chung, khi tập lệnh Python gặp tình huống mà nó không thể đối phó, nó sẽ đưa ra một ngoại lệ. Một ngoại lệ là một đối tượng Python đại diện cho một lỗi

Khi tập lệnh Python đưa ra một ngoại lệ, nó phải xử lý ngoại lệ đó ngay lập tức nếu không nó sẽ kết thúc và thoát

Xử lý một ngoại lệ

Nếu bạn có một số mã đáng ngờ có thể gây ra ngoại lệ, bạn có thể bảo vệ chương trình của mình bằng cách đặt mã đáng ngờ đó vào một lần thử. khối. Sau khi thử. khối, bao gồm một ngoại trừ. câu lệnh, theo sau là một khối mã xử lý sự cố một cách tinh tế nhất có thể

cú pháp

Đây là cú pháp đơn giản của try. ngoại trừ. các khối khác -

try:
   You do your operations here;
   ......................
except ExceptionI:
   If there is ExceptionI, then execute this block.
except ExceptionII:
   If there is ExceptionII, then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Dưới đây là một vài điểm quan trọng về cú pháp nêu trên -

  • Một câu lệnh try có thể có nhiều câu lệnh except. Điều này hữu ích khi khối thử chứa các câu lệnh có thể đưa ra các loại ngoại lệ khác nhau

  • Bạn cũng có thể cung cấp một mệnh đề ngoại trừ chung để xử lý bất kỳ ngoại lệ nào

  • Sau (các) mệnh đề ngoại trừ, bạn có thể bao gồm mệnh đề khác. Mã trong khối khác thực thi nếu mã trong khối thử. khối không đưa ra một ngoại lệ

  • Khối khác là một nơi tốt cho mã không cần thử. khối bảo vệ

Ví dụ

Ví dụ này mở một tệp, ghi nội dung vào tệp, tệp và xuất hiện một cách duyên dáng vì không có vấn đề gì cả -

#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()

Điều này tạo ra kết quả sau -

Written content in the file successfully

Ví dụ

Ví dụ này cố gắng mở một tệp mà bạn không có quyền ghi, vì vậy nó phát sinh một ngoại lệ -

#!/usr/bin/python

try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

Điều này tạo ra kết quả sau -

Error: can't find file or read data

Điều khoản ngoại trừ không có ngoại lệ

Bạn cũng có thể sử dụng câu lệnh except mà không có ngoại lệ nào được định nghĩa như sau -

________số 8_______

Loại câu lệnh thử ngoại trừ này nắm bắt tất cả các ngoại lệ xảy ra. Tuy nhiên, việc sử dụng loại câu lệnh thử ngoại trừ này không được coi là một phương pháp lập trình tốt, bởi vì nó bắt được tất cả các ngoại lệ nhưng không khiến lập trình viên xác định nguyên nhân gốc rễ của vấn đề có thể xảy ra

Điều khoản ngoại trừ với nhiều ngoại lệ

Bạn cũng có thể sử dụng câu lệnh except tương tự để xử lý nhiều ngoại lệ như sau -

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list, 
   then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Mệnh đề try-cuối cùng

Bạn có thể sử dụng một cuối cùng. chặn cùng với một lần thử. khối. Khối cuối cùng là nơi để đặt bất kỳ mã nào phải thực thi, cho dù khối thử có đưa ra ngoại lệ hay không. Cú pháp của câu lệnh try-cuối cùng là thế này -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
0

Bạn không thể sử dụng mệnh đề khác cùng với mệnh đề cuối cùng

Ví dụ

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
1

Nếu bạn không có quyền mở tệp ở chế độ ghi, thì điều này sẽ tạo ra kết quả sau -

Error: can't find file or read data

Ví dụ tương tự có thể được viết rõ ràng hơn như sau -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
3

Khi một ngoại lệ được ném vào khối thử, việc thực thi sẽ ngay lập tức chuyển sang khối cuối cùng. Sau khi tất cả các câu lệnh trong khối cuối cùng được thực thi, ngoại lệ lại được đưa ra và được xử lý trong các câu lệnh ngoại trừ nếu xuất hiện trong lớp cao hơn tiếp theo của câu lệnh thử ngoại trừ

Đối số của một ngoại lệ

Một ngoại lệ có thể có một đối số, là một giá trị cung cấp thêm thông tin về sự cố. Nội dung của đối số thay đổi theo ngoại lệ. Bạn nắm bắt đối số của một ngoại lệ bằng cách cung cấp một biến trong mệnh đề ngoại trừ như sau -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
4

Nếu bạn viết mã để xử lý một ngoại lệ, bạn có thể có một biến theo sau tên của ngoại lệ trong câu lệnh except. Nếu bạn đang bẫy nhiều ngoại lệ, bạn có thể có một biến theo sau bộ ngoại lệ

Biến này nhận giá trị của ngoại lệ chủ yếu chứa nguyên nhân của ngoại lệ. Biến có thể nhận một giá trị hoặc nhiều giá trị dưới dạng một bộ. Bộ dữ liệu này thường chứa chuỗi lỗi, số lỗi và vị trí lỗi

Ví dụ

Sau đây là một ví dụ cho một ngoại lệ duy nhất -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
5

Điều này tạo ra kết quả sau -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
6

Tăng ngoại lệ

Bạn có thể tăng ngoại lệ theo nhiều cách bằng cách sử dụng câu lệnh tăng. Cú pháp chung cho câu lệnh nâng cao như sau

cú pháp

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
7

Ở đây, Exception là loại ngoại lệ (ví dụ: NameError) và đối số là giá trị cho đối số ngoại lệ. Đối số là tùy chọn;

Đối số cuối cùng, truy nguyên, cũng là tùy chọn (và hiếm khi được sử dụng trong thực tế) và nếu có, là đối tượng truy nguyên được sử dụng cho ngoại lệ

Ví dụ

Một ngoại lệ có thể là một chuỗi, một lớp hoặc một đối tượng. Hầu hết các ngoại lệ mà lõi Python đưa ra là các lớp, với một đối số là một thể hiện của lớp. Việc xác định các ngoại lệ mới khá dễ dàng và có thể được thực hiện như sau -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
8

Ghi chú. Để bắt một ngoại lệ, mệnh đề "ngoại trừ" phải đề cập đến cùng một ngoại lệ được ném đối tượng lớp hoặc chuỗi đơn giản. Ví dụ, để nắm bắt ngoại lệ trên, chúng ta phải viết mệnh đề except như sau -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
9

Ngoại lệ do người dùng xác định

Python cũng cho phép bạn tạo các ngoại lệ của riêng mình bằng cách lấy các lớp từ các ngoại lệ tích hợp sẵn tiêu chuẩn

Đây là một ví dụ liên quan đến RuntimeError. Ở đây, một lớp được tạo được phân lớp từ RuntimeError. Điều này hữu ích khi bạn cần hiển thị thông tin cụ thể hơn khi một ngoại lệ bị bắt

Trong khối thử, ngoại lệ do người dùng xác định được nêu ra và bị bắt trong khối ngoại trừ. Biến e được sử dụng để tạo một thể hiện của lớp Networkerror

Các lỗi có thể được phát hiện bởi Python là gì?

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. .
Lỗi cú pháp tương tự như lỗi ngữ pháp hoặc lỗi chính tả trong Ngôn ngữ. .
Thiếu ký hiệu (chẳng hạn như dấu phẩy, dấu ngoặc, dấu hai chấm), viết sai từ khóa, thụt lề không chính xác là những lỗi cú pháp phổ biến trong Python

Loại lỗi nào mà trình thông dịch Python chạy chương trình không bắt được và không báo lỗi?

Lỗi thời gian chạy .

3 loại lỗi trong lập trình Python là gì?

Trong python có ba loại lỗi; . syntax errors, logic errors and exceptions.

Các lỗi phổ biến nhất trong Python là gì?

Tránh 8 lỗi phổ biến này trong Python .
1️⃣ Không tuân theo các quy tắc. .
2️⃣ Dùng sai cách diễn đạt. .
3️⃣ Sửa đổi và lặp lại danh sách. .
4️⃣ Đụng độ tên. .
5️⃣ Sử dụng biến lớp không chính xác. .
6️⃣ Không xác định chính xác các thông số. .
7️⃣ Lạm dụng “_ _ del _ _”.
8️⃣ Phụ thuộc mô-đun tròn