Để nắm bắt được ngoại lệ, chúng ta sử dụng cú pháp try…catch hoặc throw.
Mệnh đề try…catch
Nếu bạn viết một chương trình có khả năng nảy sinh ngoại lệ, bạn cần đặt nó vào trong khối lệnh của từ khóa try, nếu ngoại lệ phát sinh, hành động xử lý của bạn sẽ được đặt trong khối lệnh của từ khóa catch.Ví dụ | Kết quả |
#include int main() { int a; try{ throw 20; }catch(int e){ cout< } return 0; } | 20 |
Trong chương trình này, lệnh throw đang cố vượt qua một ngoại lệ tương ứng với mã 20, nhưng ngoại lệ này bị nắm bắt bởi câu lệnh try…catch. Do ngoại lệ phát sinh, nên lệnh trong mệnh đề catch được thực thi.
Nếu có nhiều ngoại lệ phát sinh, bạn có thể sử dụng cấu trúc đa tầng của mệnh đề catch: try{…}catch(…){…}catch(…){…}…
Mệnh đề throw
Khi khai báo một hàm, nếu trong hàm đó có khả năng phát sinh ngoại lệ, chúng ta có thể chỉ định từ khóa throw cho nótype tên_hàm(danh_sách_tham_số) throw (int) |
Thư viện chuẩn exception
Trong thư viện chuẩn của C++, cung cấp cho chúng ta một thư viện chuẩn để quản lý các ngoại lệ đó là exception. Nó nằm trong namespace std. Lớp này có một hàm tạo mặc định, một hàm tạo sao chép, các toán tử và hàm hủy và một hàm thành viên ảo what(). Hàm này trả về con trỏ kí tự phát sinh ngoại lệ. Nó có thể được quá tải trong lớp dẫn xuất.Ví dụ | Kết quả |
#include using namespace std; class myexception:public exception{ virtual const char* what() const throw(){ return “Co ngoai le !”; } }; int main(){ try{ myexception myex; throw myex; }catch(exception& e){ cout< } return 0; } |
No comments:
Post a Comment