Hướng dẫn try catch trong python - thử bắt trong python
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người. Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. Show
1- Exception là gì? Trước hết chúng ta hãy xem một ví dụ minh họa sau: Trong ví dụ này có một đoạn code lỗi nguyên nhân do phép chia cho 0. Việc chia cho 0 gây ra ngoại lệ: ZeroDivisionError helloExceptionExample.py
Kết quả chạy ví dụ: Bạn có thể thấy thông báo lỗi trên màn hình Console, thông báo lỗi rất rõ ràng, xẩy ra ở dòng thứ mấy trên code. Hãy xem luồng đi của chương trình qua hình minh họa dưới đây.
Chúng ta sẽ sửa code của ví dụ trên. helloCatchException.py
Và kết quả chạy ví dụ:
Chúng ta sẽ giải thích bằng hình minh họa dưới đây về luồng đi của chương trình.
2- Sơ đồ phân cấpĐây là mô hình sơ đồ phân cấp của các ngoại lệ trong Python. Python.
Các Exception sẵn có của Python thông thường được bắt nguồn (derived) từ BaseException (Mở rộng từ BaseException). Trong khi đó các exception của người dùng (lập trình viên) nên thừa kế từ lớp Exception hoặc từ các lớp con của nó. Exception sẵn có của Python thông thường được bắt nguồn (derived) từ BaseException (Mở rộng từ BaseException). Trong khi đó các exception của người dùng (lập trình viên) nên thừa kế từ lớp Exception hoặc từ các lớp con của nó. 3- Bắt ngoại lệ thông qua try-exceptChúng ta viết một lớp exception thừa kế từ lớp Exception. Exception.
Hàm checkAge để kiểm tra tuổi, nếu tuổi nhỏ hơn 18 hoặc lớn hơn 40 một ngoại lệ sẽ được ném ra. checkAge để kiểm tra tuổi, nếu tuổi nhỏ hơn 18 hoặc lớn hơn 40 một ngoại lệ sẽ được ném ra. ageexception.py
Ví dụ: tryExceptDemo1.py
Chạy ví dụ:
Ví dụ dưới đây, chúng ta sẽ gộp bắt các ngoại lệ thông qua ngoại lệ ở cấp cao hơn. Ở cấp cao hơn nó sẽ bắt được ngoại lệ đó và tất cả các ngoại lệ con. tryExceptDemo2.py
Output:
4- Khối try-except-finallyTrên kia chúng ta đã làm quen với việc bắt ngoại lệ thông qua khối try-except. Việc xử lý ngoại lệ đầy đủ là try-except-finally. Khối finally luôn được thực thi bất kể ngoại lệ có xẩy ra tại khối try hay không. try-except. Việc xử lý ngoại lệ đầy đủ là try-except-finally. Khối finally luôn được thực thi bất kể ngoại lệ có xẩy ra tại khối try hay không. try - except - finally
Ví dụ: tryExceptFinallyDemo.py
Chạy ví dụ: 0Ví dụ dưới đây, chúng ta sẽ gộp bắt các ngoại lệ thông qua ngoại lệ ở cấp cao hơn. Ở cấp cao hơn nó sẽ bắt được ngoại lệ đó và tất cả các ngoại lệ con. finally luôn được thực thi. Output: 4- Khối try-except-finally 'except' hoặc 'finally' bạn có thể sử dụng lệnh 'pass' (pass statement). Lệnh pass không làm bất cứ điều gì, nó giống như một lệnh null. passStatementExample.py 1Output: 4- Khối try-except-finallyTrên kia chúng ta đã làm quen với việc bắt ngoại lệ thông qua khối try-except. Việc xử lý ngoại lệ đầy đủ là try-except-finally. Khối finally luôn được thực thi bất kể ngoại lệ có xẩy ra tại khối try hay không. reRaiseExceptionDemo1.py 2try - except - finally reRaiseExceptionDemo2.py 3try : # Làm gì đó tại đây. except Exception1 as e : # Làm gì đó tại đây. except Exception2 as e : # Làm gì đó tại đây. finally : # Khối finally luôn luôn được thực thi. # Làm gì đó tại đây.Đây là sơ luồng đi của chương trình. Khối finally luôn được thực thi. cho phép bắt ngoại lệ, và ném ra một ngoại lệ mới, ngoại lệ mới có thể lưu trữ thông tin của ngoại lệ ban đầu, mà bạn có thể truy cập thông qua thuộc tính __cause__. Lệnh pass 4Nếu bạn không muốn xử lý gì trong khối 'except' hoặc 'finally' bạn có thể sử dụng lệnh 'pass' (pass statement). Lệnh pass không làm bất cứ điều gì, nó giống như một lệnh null. wrapExceptionDemo.py 5Output: 6 |