Thứ Bảy, 19 tháng 7, 2025

🛡️ BÀI 9: XỬ LÝ NGOẠI LỆ TRONG PYTHON – try, except, finally VÀ CÁCH VIẾT CODE "KHÔNG VỠ"

🎯 1. Tổng quan

Trong khi chạy chương trình, lỗi (error) luôn có thể xảy ra:

  • Nhập sai dữ liệu

  • File không tồn tại

  • Chia cho 0

  • Kết nối API thất bại…

Nếu không xử lý, chương trình sẽ sập ngay lập tức. → Mất uy tín, mất dữ liệu.

👉 Python cung cấp cơ chế xử lý lỗi gọi là ngoại lệ (exception handling) với từ khóa:

  • try – thử làm

  • except – nếu lỗi thì xử lý

  • finally – luôn chạy (dù có lỗi hay không)


🔥 2. Cú pháp cơ bản

python
try: # mã dễ lỗi except [TênLỗi]: # xử lý khi lỗi

Ví dụ:

python
try: x = int(input("Nhập số: ")) print(100 / x) except ZeroDivisionError: print("Không chia được cho 0!") except ValueError: print("Vui lòng nhập số hợp lệ.")

🔍 3. Cách hoạt động

Giai đoạnMô tả
tryNếu chạy bình thường → bỏ qua except
exceptNếu xảy ra lỗi → chạy vào đây
finallyChạy sau cùng – dù có lỗi hay không

🔎 4. Xác định loại lỗi

Python có rất nhiều loại lỗi:

Loại lỗiKhi nào xảy ra
ZeroDivisionErrorChia cho 0
ValueErrorÉp kiểu sai
FileNotFoundErrorFile không tồn tại
KeyErrorTruy cập key không có trong dict
IndexErrorTruy cập sai index
TypeErrorSai kiểu đối tượng

Ví dụ:

python
try: data = {"name": "Minh"} print(data["age"]) except KeyError: print("Không tìm thấy key 'age'")

🛠 5. Bắt tất cả lỗi (không khuyến khích lạm dụng)

python
try: # mã nguy hiểm except Exception as e: print(f"Có lỗi xảy ra: {e}")

💡 Dùng Exception khi bạn không biết chính xác lỗi là gì.


🔄 6. Dùng elsefinally

python
try: x = 10 y = 2 z = x / y except ZeroDivisionError: print("Chia cho 0 rồi") else: print("Không có lỗi, kết quả =", z) finally: print("Hoàn thành xử lý")

🧠 else: chỉ chạy nếu không có lỗi
finally: luôn chạy → thích hợp để đóng file, kết thúc giao dịch, đóng kết nối DB...


🧪 7. Ví dụ thực tế: Xử lý file an toàn

python
try: with open("data.txt", "r") as f: content = f.read() print(content) except FileNotFoundError: print("File không tồn tại!") finally: print("Kết thúc chương trình.")

🧠 8. Kỹ thuật nâng cao: tạo ngoại lệ tùy biến

python
def rút_tiền(số_dư, số_rút): if số_rút > số_dư: raise ValueError("Không đủ tiền!") return số_dư - số_rút try: mới = rút_tiền(100, 150) except ValueError as e: print("Lỗi:", e)

📌 9. Mẹo chuyên gia

MẹoGiải thích
Luôn bắt lỗi cụ thểTránh dùng except: chung chung
Luôn dùng finally khi có tài nguyên mởĐóng file, DB, API
Ghi log khi xảy ra lỗiDùng logging module
Không ẩn lỗi quá mứcIn thông báo có ích cho user/dev

📚 10. Bài tập thực hành

  1. Viết chương trình nhập 2 số, tính thương, xử lý lỗi nhập sai hoặc chia 0

  2. Viết chương trình đọc file input.txt, nếu file không tồn tại thì tạo mới

  3. Viết hàm chuyển số âm thành số dương, nếu không phải số → raise TypeError

  4. Viết trình kiểm tra mật khẩu nhập đúng định dạng (≥6 ký tự, có số)


✅ 11. Kết luận

  • try/except giúp chương trình không chết yểu

  • Xử lý tốt lỗi = nâng cao trải nghiệm người dùng + tăng độ ổn định hệ thống

  • Làm chủ exception là nền tảng để học tiếp OOP, Threading, Web API

=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master