Computer >> Máy Tính >  >> Lập trình >> Python

Các ngoại lệ cụ thể trong Python

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