Câu lệnh try...except Python bắt ngoại lệ (exception). Nó dùng kiểm tra mã lỗi viết trong câu lệnh "try". Nếu gặp lỗi, nội dung khối "except" chạy.
Cách dùng Try và Except trong Python
Bạn có thể muốn kiểm tra khối mã cụ thể đảm bảo nó hoạt động đúng trước khi cho phần còn lại chương trình chạy. Ví dụ, bạn viết lượng lớn mã mới cho chương trình. Bạn muốn chắc chắn nó chạy trước khi cho phần còn lại chạy.
Khối try...except cho phép kiểm tra mã và xử lý ngoại lệ nếu ném ra. Bạn thêm câu lệnh finally và else chạy mã bổ sung tùy kết quả khối try...except.
Trong hướng dẫn, nói cách dùng try và except Python. Tham chiếu ví dụ để bạn nhanh bắt đầu dùng try và except.
Python Errors và Exceptions (Lỗi và Ngoại lệ): Ôn tập
Trong Python, hai loại lỗi bạn gặp: lỗi cú pháp (syntax errors) và ngoại lệ (exceptions).
Lỗi cú pháp Python là loại lỗi trả về khi dùng sai cú pháp. Ví dụ, viết vòng lặp while True không dấu hai chấm cuối, chương trình báo lỗi.
Khi lỗi cú pháp xảy ra, trả về tên tệp, số dòng, chỉ báo nơi lỗi có thể hiện diện.
Ngoại lệ là loại lỗi mã có cú pháp đúng nhưng vẫn chứa vấn đề. Nhiều loại ngoại lệ, nhưng phổ biến gặp: ArithmeticError, ImportError, ZeroDivisionError, NameError, TypeError.
Câu lệnh Python try...except
Câu lệnh try...except Python chạy mã dưới câu lệnh "try". Nếu mã không thực thi thành công, chương trình dừng dòng gây lỗi và mã "except" chạy.
Khối try cho phép kiểm tra khối mã lỗi. Khối except cho phép xử lý lỗi với phản hồi do người dùng định nghĩa.
Cú pháp khối try...except:
try:
yourcode...
except:
yourcode...
Bạn bao quanh bất kỳ mã Python hợp lệ nào trong câu lệnh try hoặc except.
Ví dụ try...except Python
Ví dụ cú pháp khối try...except:
try:
print(ourVariable)
except:
print('Error returned')
Trong ví dụ, chưa khai báo biến ourVariable, nhưng cố dùng trong khối try.
Nếu không có khối try...except, chương trình trả về thông báo lỗi. Mặc dù thấy lỗi ổn khi gỡ lỗi, người dùng thường thấy bối rối nếu thấy thông báo lỗi.
Vì có khối try...except, mã biết làm gì khi gặp lỗi.
Kết quả mã:
Error returned
Khối try...except cho phép xử lý ngoại lệ nhẹ nhàng. Bạn cũng có thể triển khai tính năng lưu ngoại lệ vào tệp nhật ký dùng gói như module logging Python. Cho phép theo dõi ngoại lệ đã ném.
try...except Python: Nhiều câu lệnh Except
Bạn lặp câu lệnh except cho các loại lỗi khác để kiểm tra nhiều ngoại lệ. Hữu ích nếu nghi ngờ một trong nhiều ngoại lệ có thể ném nhưng không chắc ngoại lệ nào.
Ví dụ khối try...except tìm NameError:
try:
print(ourVariable)
except NameError:
print('ourVariable is not defined')
except:
print('Error returned')
Trường hợp này, mã trả về ourVariable is not defined vì mã trả về NameError. Chúng ta thêm lỗi khác, như ZeroDivisionError hoặc OSError, tùy mã kiểm tra.
Ví dụ, kiểm tra IOError và FileNotFoundError nếu muốn mở tệp. Kiểm tra nhiều ngoại lệ đảm bảo chương trình tiếp tục chạy ngay cả khi lỗi mở tệp tham chiếu.
try...except Python: Finally
Nhưng nếu muốn thông báo in cả khi lỗi trả về và không lỗi? Đó là lúc khối finally xuất hiện. Nếu định nghĩa mệnh đề finally, nội dung thực thi bất kể khối try...except ném lỗi hay không.
Khối finally là chỉ báo hữu ích mã đã thực thi. Vì không phân biệt mã thực thi thành công, không dùng thường xuyên.
Ví dụ:
try:
print(ourVariable)
except:
print('ourVariable is not defined')
finally:
print('Code has been run.')
Chương trình trả về:
ourVariable is not defined Code has been run.
Mã trong khối except thực thi vì ngoại lệ tìm thấy (ourVariable không định nghĩa). Mã trong mệnh đề finally cũng thực thi, vì mã kết thúc chạy.
try...except Python: Else
Dùng mệnh đề else, định nghĩa mã chạy trường hợp không ngoại lệ ném ra. Có thể dùng thông báo người dùng chương trình thực thi thành công.
Tưởng tượng tạo hệ thống đăng ký game. Bạn bao gồm khối try...except...else kiểm tra tên người dùng hoặc email người dùng chọn hợp lệ. Nếu không, mệnh đề except chạy. Nếu hợp lệ, khối else chạy.
Ví dụ:
try:
print('Test')
except:
print('There is a problem.')
else:
print('There are no problems.')
Mã trả về:
There are no problems.
Chương trình Python không gặp ngoại lệ. Kết quả, mã trong câu lệnh else thực thi. Câu lệnh else in thông báo không vấn đề với mã.
Xem Repl.it từ hướng dẫn này:
Kết luận
Khối try...except làm gỡ lỗi mã Python dễ dàng. Chương trình thử chạy mã trong khối "try". Nếu thất bại, khối "except" chạy. Mã trong câu lệnh "finally" chạy bất kể khối "except" thực thi hay không.
Trong hướng dẫn, phân tích cách dùng khối try...except. Thảo luận dùng else và except tùy chỉnh xử lý ngoại lệ.
Các khối hữu ích khi kiểm tra mã hiện có hoặc viết mã mới. Đảm bảo chương trình chạy đúng và không lỗi.
Về tài nguyên học Python thêm, xem hướng dẫn toàn diện How to Learn Python.