Chuyên mục:
Python
Cập nhật:
05/12/2024

Raise
ItemsinCarrt = 0
if ItemsinCarrt != 2:
raise Exception('Sản phẩm trong giỏ hàng không hợp lệ')
Đoạn mã trên có thể được giải thích như sau
ItemsinCarrt = 0
: Đây là một dòng khai báo biếnItemsinCarrt
và gán giá trị0
cho nó. Biến này có thể đại diện cho số lượng sản phẩm trong giỏ hàng.if ItemsinCarrt != 2:
: Câu lệnh điều kiệnif
kiểm tra xem giá trị của biếnItemsinCarrt
có khác2
hay không. Nếu giá trị củaItemsinCarrt
không bằng2
(tức là giỏ hàng không có chính xác 2 sản phẩm), thì điều kiện này sẽ được đánh giá là đúng.raise Exception('Sản phẩm trong giỏ hàng không hợp lệ')
: Nếu điều kiện trên đúng, câu lệnhraise
sẽ tạo ra một ngoại lệ (Exception
) với thông báo'Sản phẩm trong giỏ hàng không hợp lệ'
. Điều này sẽ ngừng thực thi chương trình và báo lỗi về vấn đề giỏ hàng không có số lượng sản phẩm hợp lệ (ở đây là số lượng khác 2).
Pass và assert
ItemsinCarrt = 0
if ItemsinCarrt != 2:
pass
assert(ItemsinCarrt == 2)
Đoạn mã trên có thể được giải thích như sau:
1. ItemsinCarrt = 0
- Dòng này khai báo và gán giá trị
0
cho biếnItemsinCarrt
. Đây có thể là số lượng sản phẩm trong giỏ hàng, và ở thời điểm này, giỏ hàng không chứa sản phẩm nào.
2. if ItemsinCarrt != 2:
- Câu lệnh
if
kiểm tra xem giá trị củaItemsinCarrt
có khác2
hay không. Trong trường hợp này, vìItemsinCarrt
được gán giá trị0
, điều kiệnItemsinCarrt != 2
sẽ đúng (vì0 != 2
).
3. pass
- Câu lệnh
pass
được sử dụng để "đánh dấu" một khối lệnh mà không thực hiện bất kỳ hành động nào. Nó tương tự như một placeholder trong Python. - Trong trường hợp này, khi điều kiện
if ItemsinCarrt != 2
đúng, chương trình không làm gì cả và tiếp tục. Do đó, nếu giỏ hàng không có 2 sản phẩm, chương trình sẽ không thực hiện thêm bất kỳ hành động nào.
4. assert(ItemsinCarrt == 2)
assert
là một câu lệnh kiểm tra điều kiện. Nếu điều kiện trongassert
không đúng, nó sẽ gây ra một ngoại lệ (AssertionError
) và chương trình sẽ dừng lại.- Trong trường hợp này, điều kiện kiểm tra là
ItemsinCarrt == 2
. Tuy nhiên, trước đó biếnItemsinCarrt
đã được gán giá trị0
, do đó điều kiện này sẽ không đúng và chương trình sẽ gây ra một ngoại lệAssertionError
.
Try EXCEPT
try:
with open('filelog.txt','r') as reader:
reader.read()
except:
print('NKDKKD')
1. try:
- Câu lệnh
try
mở đầu một khối mã mà bạn dự đoán có thể gây ra lỗi. Mã trong khốitry
sẽ được thực thi trước, và nếu có lỗi xảy ra, Python sẽ chuyển đến khốiexcept
để xử lý lỗi.
2. with open('filelog.txt', 'r') as reader:
- Đây là cách mở một tệp tin (
filelog.txt
) để đọc ('r'
là chế độ đọc). with
là một cấu trúc đặc biệt trong Python giúp quản lý tệp tin hoặc tài nguyên một cách tự động, đảm bảo rằng tài nguyên được giải phóng đúng cách (đóng tệp sau khi sử dụng).reader
là đối tượng file được tạo ra khi mở tệp, và bạn có thể sử dụngreader
để đọc nội dung của tệp.
3. reader.read()
- Dòng này gọi phương thức
read()
của đối tượngreader
để đọc toàn bộ nội dung của tệpfilelog.txt
. Tuy nhiên, kết quả của việc đọc không được lưu lại hoặc xử lý trong trường hợp này, vì vậy mã này chỉ đơn giản là đọc tệp mà không làm gì với nội dung đã đọc.
4. except:
- Nếu bất kỳ lỗi nào xảy ra trong khối
try
(ví dụ: tệpfilelog.txt
không tồn tại, hoặc không thể mở tệp vì lý do nào đó), chương trình sẽ chuyển đến khốiexcept
để xử lý lỗi đó.
5. print('NKDKKD')
- Nếu có bất kỳ lỗi nào xảy ra trong khối
try
, câu lệnhprint('NKDKKD')
sẽ được thực thi, và thông báo'NKDKKD'
sẽ được in ra màn hình. - Dòng này có thể coi là thông báo lỗi mặc định khi gặp sự cố, nhưng nó không cung cấp chi tiết về lỗi thực tế.
Cách phát hiện ra lỗi hoàn chỉnh trong try excrept
try:
with open('log.txt','r') as reader:
reader.read()
except Exception as e:# sử dụng Exception as e
print(e) # in ra : [Errno 2] No such file or directory: 'log.txt' nghĩa là lỗi xuất hiện ở dòng 2, và ko có file log.txt
FINALLY
cú pháp:
try:
# Mã có thể gây ra lỗi
except SomeException as e:
# Xử lý lỗi
finally:
# Mã này luôn được thực thi, kể cả khi có lỗi hoặc không
ví dụ
try:
x = 10 / 0
except ZeroDivisionError as e:
print("Không thể chia cho 0!")
finally:
print("Khối mã này luôn được thực thi.")
Mục đích của finally
:
- Đảm bảo các tài nguyên (ví dụ: file, kết nối mạng) được đóng hoặc giải phóng một cách an toàn.
- Dù có xảy ra lỗi hay không, đoạn mã trong
finally
vẫn sẽ được thực thi, điều này hữu ích để đảm bảo rằng các bước cần thiết (như đóng file, kết nối) được thực hiện.