Python - Built

Các ngoại lệ tích hợp sẵn là các lớp lỗi được định nghĩa trước trong Python, giúp xử lý lỗi và các điều kiện ngoại lệ trong chương trình. Chúng được kế thừa từ lớp cơ sở "BaseException" và là một phần của thư viện tiêu chuẩn.

Standard Built-in Exceptions in Python

Dưới đây là danh sách các Ngoại lệ Chuẩn có sẵn trong Python −

Sr.No. Exception Name & Description
1 Exception Base class for all exceptions
2 StopIteration Raised when the next() method of an iterator does not point to any object.
3 SystemExit Raised by the sys.exit() function.
4 StandardError Base class for all built-in exceptions except StopIteration and SystemExit.
5 ArithmeticError Base class for all errors that occur for numeric calculation.
6 OverflowError Raised when a calculation exceeds maximum limit for a numeric type.
7 FloatingPointError Raised when a floating point calculation fails.
8 ZeroDivisonError Raised when division or modulo by zero takes place for all numeric types.
9 AssertionError Raised in case of failure of the Assert statement.
10 AttributeError Raised in case of failure of attribute reference or assignment.
11 EOFError Raised when there is no input from either the raw_input() or input() function and the end of file is reached.
12 ImportError Raised when an import statement fails.
13 KeyboardInterrupt Raised when the user interrupts program execution, usually by pressing Ctrl+C.
14 LookupError Base class for all lookup errors.
15 IndexError Raised when an index is not found in a sequence.
16 KeyError Raised when the specified key is not found in the dictionary.
17 NameError Raised when an identifier is not found in the local or global namespace.
18 UnboundLocalError Raised when trying to access a local variable in a function or method but no value has been assigned to it.
19 EnvironmentError Base class for all exceptions that occur outside the Python environment.
20 IOError Raised when an input/ output operation fails, such as the print statement or the open() function when trying to open a file that does not exist.
21 OSError Raised for operating system-related errors.
22 SyntaxError Raised when there is an error in Python syntax.
23 IndentationError Raised when indentation is not specified properly.
24 SystemError Raised when the interpreter finds an internal problem, but when this error is encountered the Python interpreter does not exit.
25 SystemExit Raised when Python interpreter is quit by using the sys.exit() function. If not handled in the code, causes the interpreter to exit.
26 TypeError Raised when an operation or function is attempted that is invalid for the specified data type.
27 ValueError Raised when the built-in function for a data type has the valid type of arguments, but the arguments have invalid values specified.
28 RuntimeError Raised when a generated error does not fall into any category.
29 NotImplementedError Raised when an abstract method that needs to be implemented in an inherited class is not actually implemented.

Dưới đây là một số ví dụ về các ngoại lệ chuẩn −

IndexError

Nó được hiển thị khi cố gắng truy cập vào mục ở chỉ số không hợp lệ.

numbers=[10,20,30,40]
for n in range(5):
   print (numbers[n])

Nó sẽ tạo ra output

10
20
30
40
Traceback (most recent call last):

   print (numbers[n])
IndexError: list index out of range

ModuleNotFoundError

Thông báo này sẽ hiển thị khi không thể tìm thấy mô-đun.

import notamodule
Traceback (most recent call last):

   import notamodule
ModuleNotFoundError: No module named 'notamodule'

KeyError

Nó xảy ra khi khóa từ điển không được tìm thấy.

D1={'1':"aa", '2':"bb", '3':"cc"}
print ( D1['4'])
Traceback (most recent call last):

   D1['4']
KeyError: '4'

ImportError

Nó được hiển thị khi hàm được chỉ định không khả dụng để nhập.

from math import cube
Traceback (most recent call last):

   from math import cube
ImportError: cannot import name 'cube'

StopIteration

Lỗi này xuất hiện khi hàm next() được gọi sau khi luồng iterator đã cạn kiệt.

.it=iter([1,2,3])
next(it)
next(it)
next(it)
next(it)
Traceback (most recent call last):

   next(it)
StopIteration

TypeError

Điều này được hiển thị khi toán tử hoặc hàm được áp dụng cho một đối tượng có kiểu không phù hợp.

print ('2'+2)
Traceback (most recent call last):

   '2'+2
TypeError: must be str, not int

ValueError

Nó được hiển thị khi đối số của hàm có kiểu không phù hợp.

print (int('xyz'))
Traceback (most recent call last):

   int('xyz')
ValueError: invalid literal for int() with base 10: 'xyz'

NameError

Điều này xảy ra khi không thể tìm thấy đối tượng.

print (age)
Traceback (most recent call last):

   age
NameError: name 'age' is not defined

ZeroDivisionError

Nó được hiển thị khi toán hạng thứ hai trong phép chia bằng không.

x=100/0
Traceback (most recent call last):

   x=100/0
ZeroDivisionError: division by zero

KeyboardInterrupt

Khi người dùng nhấn phím ngắt, thường là Control-C, trong quá trình thực thi chương trình.

name=input('enter your name')
enter your name^c
Traceback (most recent call last):

   name=input('enter your name')
KeyboardInterrupt

Hierarchy of Built-in Exceptions

Các ngoại lệ trong Python được tổ chức theo cấu trúc phân cấp, với "BaseException" ở trên cùng. Dưới đây là một cấu trúc phân cấp đơn giản −

  • BaseException
    • SystemExit
    • KeyboardInterrupt
  • Exception
    • ArithmeticError
      • FloatingPointError
      • OverflowError
      • ZeroDivisionError
    • AttributeError
    • EOFError
    • ImportError
    • LookupError
      • IndexError
      • KeyError
    • MemoryError
    • NameError
      • UnboundLocalError
    • OSError
      • FileNotFoundError
    • TypeError
    • ValueError
    • ---(Many others)---

How to Use Built-in Exceptions

Như chúng ta đã biết, các ngoại lệ tích hợp sẵn trong Python là các lớp được định nghĩa trước để xử lý các điều kiện lỗi cụ thể. Bây giờ, đây là hướng dẫn chi tiết về cách sử dụng chúng một cách hiệu quả trong các chương trình Python của bạn −

Handling Exceptions with try-except Blocks

Cách chính để xử lý ngoại lệ trong Python là sử dụng các khối "try-except". Điều này cho phép bạn bắt và phản hồi các ngoại lệ có thể xảy ra trong quá trình thực thi mã của bạn.

Example

Trong ví dụ sau, mã có thể gây ra ngoại lệ được đặt bên trong khối "try". Khối "except" sẽ bắt ngoại lệ được chỉ định "ZeroDivisionError" và xử lý nó.

try:
   result = 1 / 0
except ZeroDivisionError as e:
   print(f"Caught an exception: {e}")

Dưới đây là kết quả thu được −

Caught an exception: division by zero

Handling Multiple Exceptions

Bạn có thể xử lý nhiều ngoại lệ bằng cách chỉ định chúng trong một tuple trong khối "except" như được trình bày trong ví dụ dưới đây −

try:
   result = int('abc')
except (ValueError, TypeError) as e:
   print(f"Caught a ValueError or TypeError: {e}")

Đầu ra của đoạn mã trên như sau −

Caught a ValueError or TypeError: invalid literal for int() with base 10: 'abc'

Using "else" and "finally" Blocks

Khối "else" sẽ được thực thi nếu khối mã trong phần "try" không phát sinh ngoại lệ.

try:
   number = int(input("Enter a number: "))
except ValueError as e:
   print(f"Invalid input: {e}")
else:
   print(f"You entered: {number}")

Đầu ra của đoạn mã trên thay đổi tùy theo đầu vào được cung cấp.

Enter a number: bn
Invalid input: invalid literal for int() with base 10: 'bn'

Khối "finally" luôn được thực thi, bất kể có xảy ra ngoại lệ hay không. Nó thường được sử dụng cho các hành động dọn dẹp, chẳng hạn như đóng tệp hoặc giải phóng tài nguyên.

try:
   file = open('example.txt', 'r')
   content = file.read()
except FileNotFoundError as e:
   print(f"File not found: {e}")
finally:
   file.close()
   print("File closed.")

Dưới đây là đầu ra của đoạn mã trên −

File closed.

Explicitly Raising Built-in Exceptions

Trong Python, bạn có thể nâng cao các ngoại lệ tích hợp để chỉ ra lỗi hoặc các điều kiện ngoại lệ trong mã của bạn. Điều này cho phép bạn xử lý các kịch bản lỗi cụ thể và cung cấp thông điệp lỗi thông tin cho người dùng hoặc các nhà phát triển đang gỡ lỗi ứng dụng của bạn.

Syntax

Dưới đây là cú pháp cơ bản để ném ngoại lệ tích hợp −

raise ExceptionClassName("Error message")

Example

Trong ví dụ này, hàm "divide" cố gắng chia hai số "a" và "b". Nếu "b" bằng không, nó sẽ phát sinh một "ZeroDivisionError" với một thông điệp tùy chỉnh.

def divide(a, b):
   if b == 0:
      raise ZeroDivisionError("Cannot divide by zero")
   return a / b

try:
   result = divide(10, 0)
except ZeroDivisionError as e:
   print(f"Error: {e}")

Đầu ra thu được như dưới đây −

Error: Cannot divide by zero