Có một số ngoại lệ phổ biến trong python. Những ngoại lệ này thường được nêu ra trong các chương trình khác nhau. Những điều này có thể được lập trình viên nêu ra một cách rõ ràng hoặc trình thông dịch python có thể ngầm định đưa ra những loại ngoại lệ này. Một số trường hợp ngoại lệ là -
Exception AssertionError
AssertionError có thể tăng lên khi câu lệnh khẳng định không thành công. Trong python có một số, chúng tôi cũng có thể đặt một số câu lệnh khẳng định trong mã của chúng tôi. Câu khẳng định luôn phải đúng. nếu điều kiện không thành công, nó sẽ tăng AssertionError.
Mã mẫu
class MyClass: def __init__(self, x): self.x = x assert self.x > 50 myObj = MyClass(5)
Đầu ra
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-21-71785acdf821> in <module>() 4 assert self.x > 50 5 ----> 6 myObj = MyClass(5) <ipython-input-21-71785acdf821> in __init__(self, x) 2 def __init__(self, x): 3 self.x = x ----> 4 assert self.x > 50 5 6 myObj = MyClass(5) AssertionError:
Lỗi thuộc tính ngoại lệ
Lỗi thuộc tính có thể phát sinh khi chúng tôi cố gắng truy cập vào một số thuộc tính của một lớp nhưng nó không có trong đó.
Mã mẫu
class point: def __init__(self, x=0, y=0): self.x = x self.y = y def getpoint(self): print('x= ' + str(self.x)) print('y= ' + str(self.y)) print('z= ' + str(self.z)) pt = point(10, 20) pt.getpoint()
Đầu ra
x= 10 y= 20 --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-15-f64eb52b2192> in <module>() 10 11 pt = point(10, 20) ---> 12 pt.getpoint() <ipython-input-15-f64eb52b2192> in getpoint(self) 7 print('x= ' + str(self.x)) 8 print('y= ' + str(self.y)) ----> 9 print('z= ' + str(self.z)) 10 11 pt = point(10, 20) AttributeError: 'point' object has no attribute 'z'
Lỗi nhập ngoại lệ
Lỗi ImportError có thể xảy ra khi nhập câu lệnh đang gặp phải một số vấn đề để nhập một số mô-đun. Nó cũng có thể được nâng lên, khi tên gói thành câu lệnh from là chính xác, nhưng không có mô-đun nào được tìm thấy như tên đã chỉ định.
Mã mẫu
from math import abcd def __init__(self, x=0, y=0):
Đầu ra
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-23-ff4519a07c77> in <module>() ----> 1 from math import abcd ImportError: cannot import name 'abcd'
Mô-đun ngoại lệNotFoundError
Nó là một lớp con của ImportError. Khi một mô-đun không được định vị, lỗi này có thể phát sinh. Nó cũng có thể được nâng lên khi Không có được tìm thấy trong sys.modules.
Mã mẫu
import abcd
Đầu ra
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-24-7b45aaa048eb> in <module>() ----> 1 import abcd ModuleNotFoundError: No module named 'abcd'
Exception IndexError
Lỗi chỉ mục có thể tăng lên khi chỉ số con của một chuỗi (Danh sách, Tuple, Tập hợp, v.v.) nằm ngoài phạm vi.
Mã mẫu
myList = [10, 20, 30, 40] print(str(myList[5]))
Đầu ra
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-29-a86bd85b04c9> in <module>() 1 myList = [10, 20, 30, 40] ----> 2 print(str(myList[5])) IndexError: list index out of range
Lỗi đệ quy ngoại lệ
RecursionError là một lỗi thời gian chạy. Khi vượt quá độ sâu đệ quy tối đa, thì độ sâu đó sẽ tăng lên.
Mã mẫu
def myFunction(): myFunction() myFunction()
Đầu ra
--------------------------------------------------------------------------- RecursionError Traceback (most recent call last) <ipython-input-39-8a59e0fb982f> in <module>() 2 myFunction() 3 ----> 4 myFunction() <ipython-input-39-8a59e0fb982f> in myFunction() 1 def myFunction(): ----> 2 myFunction() 3 4 myFunction() ... last 1 frames repeated, from the frame below ... <ipython-input-39-8a59e0fb982f> in myFunction() 1 def myFunction(): ----> 2 myFunction() 3 4 myFunction() RecursionError: maximum recursion depth exceeded
Ngừng ngoại lệ
Trong python, chúng ta có thể gặp lỗi StopIteration bằng phương thức có sẵn có tên next (). Khi một trình lặp không có phần tử nào nữa, thì phương thức next () sẽ gây ra lỗi StopIteration.
Mã mẫu
myList = [10, 20, 30, 40] myIter = iter(myList) while True: print(next(myIter))
Đầu ra
10 20 30 40 --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-42-e608e2162645> in <module>() 2 myIter = iter(myList) 3 while True: ----> 4 print(next(myIter)) StopIteration:
Lỗi thụt đầu dòng ngoại lệ
Khi có một số thụt lề không hợp lệ trong mã python, nó sẽ phát sinh loại lỗi này. Nó kế thừa SyntaxError lớp python.
Mã mẫu
for i in range(10): print("The value of i: " + str(i))
Đầu ra
File "<ipython-input-44-d436d50bbdc8>", line 2 print("The value of i: " + str(i)) ^ IndentationError: expected an indented block
Loại ngoại lệError
TypeError có thể xảy ra khi một thao tác được thực hiện trên một đối tượng thuộc loại không thích hợp. Ví dụ:nếu chúng tôi cung cấp một số dấu phẩy động trong chỉ mục mảng, nó sẽ trả về TypeError.
Mã mẫu
muList = [10, 20, 30, 40] print(myList[1.25])
Đầu ra
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-46-e0a2a05cd4d4> in <module>() 1 muList = [10, 20, 30, 40] ----> 2 print(myList[1.25]) TypeError: list indices must be integers or slices, not float
Exception ZeroDivisionError
Khi có một tình huống mà mẫu số là 0 (không) cho một bài toán chia, nó sẽ làm tăng ZeroDivisionError.
Mã mẫu
print(5/0)
Đầu ra
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-48-fad870a50e27> in <module>() ----> 1 print(5/0) ZeroDivisionError: division by zero