Trong lập trình Python, một exception (ngoại lệ) là một sự kiện xảy ra trong quá trình thực thi chương trình, khi một lỗi hoặc tình huống bất thường xảy ra mà không thể được xử lý bình thường. Khi một exception xảy ra, nó làm gián đoạn quá trình thực thi bình thường của chương trình và chương trình chuyển đến một khối mã được xác định trước, được gọi là xử lý exception (exception handling).
Lập trình Python cung cấp cơ chế mạnh mẽ để xử lý exception. Các exception có thể là các lỗi cú pháp (syntax error), lỗi thời gian chạy (runtime error) hoặc các tình huống đặc biệt được định nghĩa trong các module hay thư viện.
Cú pháp cơ bản để xử lý exception trong Python là:
pythonCopy code
try:
# Mã chương trình có thể xảy ra exception
except ExceptionType:
# Xử lý exception
Trong đó:
- Khối mã trong
try
là nơi chứa các câu lệnh có thể gây ra exception. ExceptionType
là loại exception mà bạn muốn xử lý. Ví dụ:ValueError
,TypeError
,ZeroDivisionError
và nhiều loại exception khác.- Khối mã trong
except
là nơi xử lý exception. Bạn có thể cung cấp mã để xử lý exception hoặc in thông báo lỗi.
Dưới đây là một ví dụ đơn giản về xử lý exception trong Python:
pythonCopy code
try:
x = 10 / 0 # Phép chia cho 0
except ZeroDivisionError:
print("Lỗi: Không thể chia cho 0")
Khi chạy chương trình này, phép chia cho 0 trong khối try
sẽ gây ra một ZeroDivisionError
. Tuy nhiên, khối mã trong except ZeroDivisionError
sẽ được thực thi và thông báo lỗi sẽ được in ra màn hình:
Lỗi: Không thể chia cho 0
Ngoài khối except
, bạn cũng có thể sử dụng các khối else
và finally
để bổ sung cho xử lý exception.
- Khối
else
được thực thi nếu không có exception nào xảy ra trong khốitry
. - Khối
finally
được thực thi sau khi khốitry
và các khốiexcept
hoặcelse
đã được thực thi, dù có exception xảy ra hay không. Khốifinally
thường được sử dụng để giải phóng tài nguyên hoặc thực hiện các tác vụ cuối cùng.
Dưới đây là ví dụ sử dụng cả khối else
và finally
:
try:
x = int(input("Nhập một số nguyên: "))
except ValueError:
print("Lỗi: Giá trị không hợp lệ")
else:
print("Số bạn đã nhập là:", x)
finally:
print("Chương trình đã kết thúc")
Trong ví dụ này, chương trình yêu cầu người dùng nhập một số nguyên. Nếu người dùng nhập không phải là số, một ValueError
sẽ xảy ra và thông báo lỗi sẽ được in ra. Nếu người dùng nhập một số nguyên hợp lệ, số đó sẽ được in ra màn hình. Dù có exception xảy ra hay không, khối finally
sẽ được thực thi để in thông báo kết thúc chương trình.
Exception handling giúp làm cho chương trình linh hoạt hơn, cho phép kiểm soát và xử lý các tình huống bất thường. Nó giúp tránh việc chương trình bị gián đoạn bởi lỗi và cho phép chương trình tiếp tục thực thi một cách kiểm soát trong lập trình python.