Bài 30. Xử lý ngoại lệ
Trong bài này chúng ta tìm tìm hiểu cách xử lý các ngoại lệ trong chương trình Python bằng câu lệnh try, exception và finally.
Bắt ngoại lệ
Các câu lệnh xử lý chính có thể phát sinh ngoại lệ được đặt bên trong lệnh try. Các lệnh xử lý ngoại lệ được đặt bên trong câu lệnh except.
Để lấy tên ngoại lệ ta dùng phương thức exc_info() trong module sys. Ví dụ như sau
Output:
Ở ví dụ trên, phần tử đầu tiên là 'a' không thể thực hiện phép tính r = 1/'a' nên phát sinh ngoại lệ "ValueError
" , phần tử thứ 2 là 0 phát sinh ngoại lệ "ZeroDivisionError
" khi thực hiện phép tính 1/0.
Vì tất cả các ngoại lệ tích hợp sẵn đều kế thừa từ class Exception trong module sys nên ta có thể viết chương trình trên theo cách sau:
Bắt ngoại lệ cụ thể
Ta có thể dự đoán ngoại lệ phát sinh để bắt và xử lý theo từng trường hợp.
Chỉ định ngoại lệ cụ thể cho khối lệnh except với cú pháp như sau:
Ví dụ
Ta cũng có thể bắt nhiều ngoại lệ trong một lệnh except. Ví dụ:
Câu lệnh try else
Trong một số trường hợp, ta có thể muốn chạy một khối lệnh nhất định nào đó khi khối lệnh trong try không có bất kỳ lỗi nào. Đối với những trường hợp này, ta có thể sử dụng từ khóa else với câu lệnh try.
Chương trình trên chỉ xử lý trường hợp được coi là ngoại lệ khi số nhập vào không là số chẵn. Các ngoại lệ khác sẽ không được xử lý. Ví dụ nhập vào số 0 thì chương trình sẽ báo lỗi ZeroDivisionError.
Câu lệnh try finally
Câu lệnh try... finally được thực thi bất kể điều gì, và thường được sử dụng để giải phóng các tài nguyên bên ngoài như kết thúc phiên làm việc kết nối với trung tâm dữ liệu từ xa thông qua mạng hoặc làm việc với tệp hoặc Giao diện người dùng...
Ví dụ: đóng file sau khi mở và thao tác với file
Last updated