Hướng dẫn python exception handling - xử lý ngoại lệ python
Show
Đã đăng vào thg 3 30, 2018 3:44 CH 3 phút đọc 3 phút đọc OverviewTrong python cũng như tất các các ngôn ngữ lập trình khác, những trường hợp ngoại lệ luôn có thể xảy ra gây ra lỗi. Với các lỗi nhỏ không ảnh hưởng đến performance của app có thể chúng ta không để ý nhưng đôi khi xuất hiện một số lỗi có thể gây ra crash hoặc khiến server downtime. Trong bài này chúng ta sẽ đi tìm hiều cách mà Python xử lý khi có lỗi xảy ra. What is an Exception?Exception là một lỗi xảy ra trong quá trình thực thi một chương trình. Khi nó xảy ra, Python tạo ra một exception để xử lý vấn đề đó tránh cho ứng dụng hay server của bạn bị crash. Why use Exceptions ?Exceptions là một phương thức hết sức đơn giản để các bạn có thể handle những lỗi có thể xảy ra trong code của bạn. Khi bạn nghĩ đoạn code của bạn có thể gây ra lỗi bạn có thể sử dụng exceptions để detect và handle chúng. Exception ErrorsDưới đây là một số exception phổ biến trong Python: IOError Thường thì lỗi này liên quan đến tệp tin của bạn, có thể nó đã bị lỗi và không thể nào mở được. ImportError Lỗi này thường gặp khi python không thể nào tìm thấy module khi bạn thực hiện import chúng. ValueError Lỗi này xảy ra khi bạn truyền giá trị vào một function với đúng kiểu dữ liệu nhưng giá trị của nó lại không thích hợp. Exception Errors ExamplesĐể in ra chi tiết một số lỗi cơ bản trong python các bạn có thể làm như sau: Lấy một số ví dụ:
Set up exception handling blocksĐể sử dụng exception handling in Python, đầu tiên bạn cần phải làm sao detect được các ngoại lệ có thể phát sinh trong đoạn code của bạn. Trong python bạn có thể sử dụng từ khoá "try" và "except" để bắt toàn bộ ngoại lệ có thể xảy ra trong một khối code của bạn. Khối lệnh năm giữa "try" và "except" nếu xảy ra lỗi nó sẽ gọi ra trong block except tại đây chúng ta sẽ handle nó. Ví dụ:
Hoặc đơn giản nhất bạn có thể test như sau :3
How does it work?Việc xử lý lỗi được thực hiện thông qua việc sử dụng exceptions, Nó được thực thi trong try block và nếu bất có bất kỳ lỗi nào xảy ra nó sẽ được handle trong except block. In addition to using an except block after the try block, you can also use the finally block. Ngoài ra ngoài việc sử dụng try để detect exception và xử lý chúng trong except thì bạn cũng thể xử dụng một block khác mà python cung cấp cho bạn đó là finally. Đoạn code trong finally sẽ được thực thi bất kể khi có exception xảy ra. Try ... finally clauseFinally là không bắt buộc. Nó được thêm vào với mục đích thực hiện một số tác vụ bất kể trong trường hợp có ngoại lệ xả ra.
Trong bài mình có đưa ra một số các cơ bản để handle các ngoại lệ có thể xảy ra trong quá trình phát triển phần mềm sử dụng ngôn ngữ python. Mong rằng nó giúp ích được các bạn. All rights reserved Nếu bạn viết code trên để xử lý một exception đơn, bạn có thể có một biến theo sau tên của exception trong lệnh except. Nếu bạn đang khai báo nhiều exception thì bạn có một biến theo sau tuple của các exception đó.Ví dụ của một exception đơn: Tạo một Exception trong Python Bạn có thể ném tường minh một Exception trong Python bởi sử dụng lệnh raise. Cú pháp của lệnh raise như sau:Ở đây, Lop_Exception là kiểu của exception và tham số value (tùy ý) là một giá trị. Để truy cập giá trị này thì từ khóa as được sử dụng. Trong ví dụ trên, e được sử dụng như là một biến tham chiếu mà lưu trữ giá trị của exception.
Ghi chú: để bắt một exception, một mệnh đề except phải tham chiếu tới cùng exception đã được ném. Ví dụ, để bắt exception trên, chúng ta phải viết mệnh đề except như sau:
Ví dụ Nếu bạn không có quyền mở file trong chế độ ghi, thì code trên sẽ cho kết quả:
Ví dụNếu bạn không có quyền mở file trong chế độ ghi, thì code trên sẽ cho kết quả:
Ví dụ trên có thể được viết rõ ràng hơn như sau:Khi một exception được ném trong khối try, thì trình thực thi ngay lập tức truyền tới khối finally. Sau đó tất cả các lệnh trong khối finally được thực thi, exception được tạo lại lần nữa và được xử lý bởi lệnh except nếu có mặt trong lớp trên tiếp theo của lệnh try-except. Cú pháp 0Mệnh đề except với nhiều exception trong PythonSử dụng cùng lệnh except như trên, bạn có thể khai báo nhiều exception như sau: 1Khối try-finally trong PythonTrong trường hợp nếu có bất kỳ code nào mà người dùng muốn được thực thi, dù cho có xuất hiện exception hay không thì khối code đó có thể được đặt trong khối finally. Khối finally sẽ luôn luôn được thực thi bất chấp có hay không exception. Cú pháp của khối try-finally là: 2Ghi chú: Bạn có thể cung cấp một hoặc nhiều mệnh đề except, hoặc một mệnh đề finally, nhưng không được cung cấp cả hai. Ngoài ra bạn cũng không thể sử dụng mệnh đề else với một mệnh đề finally.: Bạn có thể cung cấp một hoặc nhiều mệnh đề except, hoặc một mệnh đề finally, nhưng không được cung cấp cả hai. Ngoài ra bạn cũng không thể sử dụng mệnh đề else với một mệnh đề finally. Ví dụ 3Nếu bạn không có quyền mở file trong chế độ ghi, thì code trên sẽ cho kết quả: Ví dụ trên có thể được viết rõ ràng hơn như sau: 5Khi một exception được ném trong khối try, thì trình thực thi ngay lập tức truyền tới khối finally. Sau đó tất cả các lệnh trong khối finally được thực thi, exception được tạo lại lần nữa và được xử lý bởi lệnh except nếu có mặt trong lớp trên tiếp theo của lệnh try-except. Tham số của một Exception trong PythonMột Exception có thể có một tham số, mà là một giá trị mà cung cấp thông tin bổ sung về vấn đề. Nội dung của tham số là đa dạng tùy vào các exception. Dưới đây là cú pháp: 6Nếu bạn viết code trên để xử lý một exception đơn, bạn có thể có một biến theo sau tên của exception trong lệnh except. Nếu bạn đang khai báo nhiều exception thì bạn có một biến theo sau tuple của các exception đó. Ví dụ Nếu bạn không có quyền mở file trong chế độ ghi, thì code trên sẽ cho kết quả: 7Error: Khong tim thay fileVí dụ trên có thể được viết rõ ràng hơn như sau: 8Khi một exception được ném trong khối try, thì trình thực thi ngay lập tức truyền tới khối finally. Sau đó tất cả các lệnh trong khối finally được thực thi, exception được tạo lại lần nữa và được xử lý bởi lệnh except nếu có mặt trong lớp trên tiếp theo của lệnh try-except. Ví dụ 9Nếu bạn không có quyền mở file trong chế độ ghi, thì code trên sẽ cho kết quả: 0Ví dụ trên có thể được viết rõ ràng hơn như sau:Khi một exception được ném trong khối try, thì trình thực thi ngay lập tức truyền tới khối finally. Sau đó tất cả các lệnh trong khối finally được thực thi, exception được tạo lại lần nữa và được xử lý bởi lệnh except nếu có mặt trong lớp trên tiếp theo của lệnh try-except. Tham số của một Exception trong Python 1Một Exception có thể có một tham số, mà là một giá trị mà cung cấp thông tin bổ sung về vấn đề. Nội dung của tham số là đa dạng tùy vào các exception. Dưới đây là cú pháp: 2 |