Câu lênh try-except
Category: Python
Trong Python, lỗi và ngoại lệ có thể làm gián đoạn việc thực thi chương trình. Python cung cấp các khối try và except để xử lý các tình huống như thế này. Trong trường hợp lỗi xảy ra trong khối try, Python sẽ dừng thực thi khối try và nhảy đến khối exception. Các khối này cho phép bạn xử lý lỗi mà không làm sập chương trình.
try:
# Mã có thể gây ra ngoại lệ
x = 3 / 0
print(x)
except:
# ngoại lệ xảy ra, nếu mã trong lệnh try ném ra lỗi
print("An exception occurred.")
Đầu ra:
An exception occurred.
Hãy thử Except trong Python
Câu lệnh Try và Except được sử dụng để xử lý các lỗi này trong mã của chúng ta trong Python. Khối try được sử dụng để kiểm tra một số mã lỗi tức là mã bên trong khối try sẽ thực thi khi không có lỗi trong chương trình. Trong khi đó, mã bên trong khối except sẽ thực thi bất cứ khi nào chương trình gặp phải một số lỗi trong khối try trước đó.
Cú pháp:
try:
# Một số Mã
Except:
# Được thực thi nếu có lỗi trong
# khối thử
Try() hoạt động như thế nào?
Đầu tiên, mệnh đề try được thực thi, tức là đoạn mã nằm giữa try.
Nếu không có ngoại lệ, thì chỉ có mệnh đề try sẽ chạy, còn mệnh đề except sẽ kết thúc.
Nếu có bất kỳ ngoại lệ nào xảy ra, mệnh đề try sẽ bị bỏ qua và mệnh đề except sẽ chạy.
Nếu có bất kỳ ngoại lệ nào xảy ra, nhưng mệnh đề except trong mã không xử lý được, ngoại lệ đó sẽ được chuyển đến các câu lệnh try bên ngoài . Nếu ngoại lệ không được xử lý, thì quá trình thực thi sẽ dừng lại.
Một câu lệnh try có thể có nhiều hơn một mệnh đề except
Một số lỗi ngoại lệ phổ biến là:
IOError: nếu tập tin không thể mở được
KeyboardInterrupt: khi người dùng nhấn một phím không cần thiết
ValueError: khi hàm tích hợp nhận được đối số sai
EOFError: nếu End-Of-File bị nhấn mà không đọc bất kỳ dữ liệu nào
ImportError: nếu không tìm thấy mô-đun
Ví dụ #1: Không có ngoại lệ, do đó mệnh đề try sẽ chạy.
# Mã Python minh họa
# cách hoạt động của try()
def divide(x, y):
try:
# Phép chia lấy phần nguyên (Floor Division): Chỉ lấy phần nguyên của kết quả
result = x // y
print("Yeah! Kết quả của bạn là:", result)
except ZeroDivisionError:
print("Rất tiếc! Bạn đang chia cho số 0")
# Xem các tham số và lưu ý cách chương trình hoạt động
divide(3, 2)
Đầu ra:
Yeah! Kết quả của bạn là: 1
Ví dụ #2: Có một ngoại lệ nên chỉ có mệnh đề except mới chạy.
# Mã Python minh họa
# cách hoạt động của try()
def divide(x, y):
try:
# Phép chia lấy phần nguyên: Chỉ lấy phần nguyên của kết quả
result = x // y
print("Yeah ! Your answer is :", result)
except ZeroDivisionError:
print("Sorry ! You are dividing by zero ")
# Xem các tham số và lưu ý cách chương trình hoạt động
divide(3, 0)
Đầu ra:
Sorry ! You are dividing by zero
Ví dụ #3: Cách viết khác của câu lệnh except được trình bày bên dưới và theo cách này, câu lệnh chỉ chấp nhận những ngoại lệ mà bạn cần bắt hoặc bạn có thể kiểm tra lỗi nào đang xảy ra.
def divide(x, y):
try:
# Phép chia lấy phần nguyên: Chỉ lấy phần nguyên của kết quả
result = x // y
print("Yeah ! Your answer is :", result)
except Exception as e:
# Bằng cách này, chúng ta có thể biết loại lỗi đang xảy ra
print("The error is: ", e)
divide(3, "GFG")
divide(3,0)
Đầu ra:
The error is: unsupported operand type(s) for //: 'int' and 'str'
The error is: integer division or modulo by zero
Mệnh đề Else
Trong Python, bạn cũng có thể sử dụng mệnh đề else trên khối try-except, mệnh đề này phải có sau tất cả các mệnh đề except. Mã chỉ nhập vào khối else nếu mệnh đề try không gây ra ngoại lệ.
Cú pháp:
try:
# Một số mã
Except:
# Thực hiện nếu có lỗi trong
khối # thử
else:
# thực hiện nếu không có ngoại lệ
Ví dụ:
# Chương trình minh họa khối else với try-except
# Hàm trả về a/b
def AbyB(a , b):
try:
c = ((a+b) // (a-b))
except ZeroDivisionError:
print("a/b result in 0") # Thông báo khi chia cho 0
else:
print(c) # In kết quả nếu không có lỗi
# Chương trình chính để kiểm tra hàm trên
AbyB(2.0, 3.0)
AbyB(3.0, 3.0)
Đầu ra:
-5.0
a/b result in 0
Từ khóa cuối cùng trong Python
Python cung cấp từ khóa finally, luôn được thực thi sau các khối try và except. Khối final luôn được thực thi sau khi khối try kết thúc bình thường hoặc sau khi khối try kết thúc do một số ngoại lệ.
Cú pháp:
Try:
# Một số mã
Except:
# Thực thi nếu có lỗi trong
khối thử
else:
# Thực thi nếu không có ngoại lệ
finally:
# Một số mã .....(luôn được thực thi)
# Chương trình Python minh họa khối finally
# Không có ngoại lệ nào được đưa ra trong khối try
try:
k = 5 // 0 # gây ra lỗi chia cho 0
print(k)
# Xử lý lỗi chia cho 0
except ZeroDivisionError:
print("Can't divide by zero")
finally:
# Khối này luôn luôn được thực thi
# bất kể có xảy ra ngoại lệ hay không.
print('This is always executed')
Đầu ra:
Can't divide by zero
This is always executed
Published on Jun 20, 2025