Tài liệu lập trình C tiếng Việt lesson 7 Exception

33 448 0
Tài liệu lập trình C tiếng Việt lesson 7 Exception

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lập trình hướng đối tượng Bài 7: Ngoại lệ (Exception) Nội dung  Ngoại lệ gì?  Cách quản lý ngoại lệ  Sử dụng khối try/catch để quản lý ngoại lệ  Các lớp ngoại lệ C++  Tạo lớp ngoại lệ người dùng  Cách ném ném tiếp ngoại lệ  Xem xét ngăn xếp ngoại lệ Ngoại lệ   Exception: kiện không mong muốn xảy thực chương trình Nếu ngoại lệ xảy thực  Người lập trình cung cấp mã để kết thúc chương trình  Chương trình kết thúc với thông báo lỗi thích hợp  Có thể bổ sung thêm mã quản lý ngoại lệ nơi xảy lỗi Quản lý ngoại lệ chương trình  Hàm assert:  Kiểm tra biểu thức thỏa điều kiện  Nếu điều kiện không thỏa, kết thúc chương trình  Thí dụ: chia cho  Nếu số chia 0, assert kết thúc chương trình với thông báo lỗi Cơ chế C++ để quản lý lỗi  Sử dụng khối try/catch  Ngoại lệ phải ném từ khối try bị bắt khối catch  C++ cung cấp hỗ trợ việc quản lý ngoại lệ thông qua phân cấp lớp Khối try/catch  Các lệnh phát sinh ngoại lệ đặt khối try  Khối try chứa lệnh mà không thực ngoại lệ xảy  Mỗi khối try có nhiều khối catch Khối try/catch  Khối catch:  Xác định dạng ngoại lệ mà bắt  Chứa  lệnh xử lý ngoại lệ Nếu khối catch chứa phần tham số  Khối catch bắt tất dạng ngoại lệ  Cú pháp chung khối try/catch Khối try/catch  Nếu ngoại lệ ném từ khối try  Tất khối catch cho khối try bị lờ  Việc thực tiếp tục với lệnh sau khối catch sau  Nếu ngoại lệ ném từ khối try  Các lệnh lại khối try không thực Khối try/catch  Chương trình chuyển tới khối catch theo thứ tự tìm kiếm quản lý ngoại lệ tương ứng  Nếu dạng ngoại lệ ném phù hợp với dạng tham số khối catch đó:  Mã khối catch thực  Các khối catch lại không thực 10 Sử dụng lớp ngoại lệ C++  Nếu toán tử new cung cấp nhớ    Nó ném ngoại lệ bad_alloc Lớp runtime_error giải lỗi xảy thực chương trình Lớp overflow_error underflow_error   Giải ngoại lệ tràn số học Dẫn xuất từ lớp runtime_error 19 Lớp ngoại lệ người dùng     Người lập trình tạo lớp ngoại lệ C++ sử dụng chế cho ngoại lệ người dùng xác định ngoại lệ có sẵn Phải ném ngoại lệ người dùng xác định qua lệnh throw Mọi lớp lớp ngoại lệ 20 Ném ném tiếp ngoại lệ  Khi ngoại lệ xảy khối try  Điều  khiển chuyển tới khối catch Trong khối catch  Quản lý ngoại lệ xử lý cụ thể ngoại lệ sau ném tiếp ngoại lệ,  Ném ngoại lệ khác cho môi trường 21 Ném ném tiếp ngoại lệ  Cú pháp chung để ném tiếp ngoại lệ là: throw; (trong trường hợp ném tiếp ngoại lệ bắt được) hoặc: throw expression; expression giá trị hằng, biến đối tượng 22 Ném ném tiếp ngoại lệ   Đối tượng ném  Đối tượng cụ thể  Đối tượng nặc danh Hàm xác định ngoại lệ ném khai báo sử dụng mệnh đề throw 23 Các kỹ thuật quản lý ngoại lệ  Khi ngoại lệ xảy người lập trình thường có lựa chọn:  Kết thúc chương trình  Thêm  Ghi mã để khắc phục ngoại lệ log tiếp tục 24 Kết thúc chương trình  Trong số trường hợp, lựa chọn tốt kết thúc chương trình ngoại lệ xảy  Thí dụ, input file không tồn chương trình thực   Không thể tiếp tục thực chương trình Chương trình đưa thông báo lỗi tương ứng kết thúc 25 Sửa lỗi tiếp tục  Trong số trường hợp, người lập trình muốn sửa lỗi tiếp tục chương trình  Thí dụ, người dùng vào chữ phần số   Kênh vào chuyển sang trạng thái failt Cần thêm số mã để giữ dấu nhắc người dùng vào tới liệu vào hợp lệ 26 Log tiếp tục chương trình  Thí dụ, chương trình thiết kế để điều khiển phản ứng hạt nhân theo dõi vệ tinh  Không  thể kết thúc có ngoại lệ xảy Khi ngoại lệ xảy  Chương trình nên viết ngoại lệ tiếp tục chạy 27 Xem xét stack ngoại lệ  Khi ngoại lệ ném hàm, hàm sau:  Không  Xử làm lý phần ngoại lệ ném tiếp  Ném ngoại lệ 28 Xem xét stack ngoại lệ  Trong trường hợp stack ngoại lệ hàm gọi cởi  Ngoại  lệ bắt khối try/catch Khi stack hàm gọi cởi  Hàm ngoại lệ không bắt ném tiếp kết thúc  Bộ nhớ cho biến địa phương bị phá hủy 29 Xem xét stack ngoại lệ  Stack cởi tới  Có khối try/catch quản lý ngoại lệ  Chương  trình không quản lý ngoại lệ Nếu chương trình không quản lý ngoại lệ, hàm terminate gọi để kết thúc chương trình 30 Tổng kết      Exception: kiện không mong muốn phát sinh thực chương trình Hàm assert kiểm tra xem biểu thức có giá trị xác định không? Nếu không kết thúc chương trình Khối try/catch quản lý ngoại lệ Các lệnh khối try phát ngoại lệ Khối catch xác định dạng ngoại lệ bắt chứa mã giải 31 Tổng kết      Nếu không xảy ngoại lệ nào, tất khối catch cho khối try lờ đi, lệnh tiếp tục thực sau khối catch sau Dạng liệu tham số khối catch xác định dạng ngoại lệ khối catch bắt Khối catch có nhiều tham số Lớp exception lớp sở cho lớp ngoại lệ khác Dữ liệu thành phần tên what trả chuỗi chứa đối tượng ngoại lệ ném lớp ngoại lệ built-in 32 Tổng kết      Lớp exception nằm file header exception Lớp runtime_error giữ lỗi thời gian chạy C++ cho phép người lập trình tạo lớp ngoại lệ họ Hàm xác định ngoại lệ ném khai báo cảu sử dụng từ khóa throw Nếu chương trình không bắt ngoại lệ hàm terminate kết thúc chương trình 33 [...]... c dạng x c định  Tất c c c dạng ngoại lệ   Khối catch với … ở tham số c thể bắt tất c c c dạng ngoại lệ Theo thứ tự c a c c khối catch, nếu khối catch với … c n thiết thì  Nó nên là khối catch sau c ng 14 Khối try/catch trong chương trình: 15 Sử dụng c c lớp ngoại lệ trong C+ +    C+ + hỗ trợ vi c quản lý ngoại lệ thông qua c y phân c p c c lớp Hàm trả ra chuỗi chứa đối tượng ngoại lệ đư c. .. khối catch cho khối try đó đư c lờ đi, lệnh tiếp t c th c hiện sau khối catch sau c ng Dạng dữ liệu c a tham số khối catch x c định dạng ngoại lệ khối catch đó bắt Khối catch chỉ c thể c nhiều nhất 1 tham số Lớp exception là lớp c sở cho c c lớp ngoại lệ kh c Dữ liệu thành phần tên what trả ra chuỗi chứa bởi đối tượng ngoại lệ ném ra bởi c c lớp ngoại lệ built-in 32 Tổng kết      Lớp exception. .. lệ chuẩn c a C+ + Lớp exception là:  Lớp c sở cho c c lớp ngoại lệ c a C+ +  Chứa trong head file exception 16 Sử dụng lớp ngoại lệ trong C+ +  Hai lớp dẫn xuất từ exception:  logic_error  runtime_error  logic_error và runtime_error đư c x c định trong header file stdexcept  Lớp invalid_argument giải quyết trường hợp c c đối số không hợp lệ trong lời gọi hàm 17 Sử dụng c c lớp ngoại lệ trong C+ +...  lệ c thể đư c bắt ở khối try/catch tiếp theo Khi stack hàm gọi đư c cởi ra  Hàm ở đó ngoại lệ không đư c bắt ho c đư c ném tiếp sẽ kết th c  Bộ nhớ cho biến địa phương bị phá hủy 29 Xem xét stack ngoại lệ  Stack đư c cởi ra tới khi  C khối try/catch quản lý ngoại lệ  Chương  trình không quản lý ngoại lệ Nếu chương trình không quản lý ngoại lệ, hàm terminate đư c gọi để kết th c chương trình. .. 23 C c kỹ thuật quản lý ngoại lệ  Khi ngoại lệ xảy ra người lập trình thường c 3 lựa chọn:  Kết th c chương trình  Thêm  Ghi mã để kh c ph c ngoại lệ log rồi tiếp t c 24 Kết th c chương trình  Trong một số trường hợp, lựa chọn tốt nhất là kết th c chương trình khi ngoại lệ xảy ra  Thí dụ, nếu input file không tồn tại khi chương trình th c hiện   Không thể tiếp t c th c hiện chương trình Chương...  Exception: sự kiện không mong muốn c thể đư c phát sinh trong khi th c hiện chương trình Hàm assert kiểm tra xem biểu th c có giá trị x c định không? Nếu không sẽ kết th c chương trình Khối try/catch quản lý ngoại lệ C c lệnh trong khối try c thể phát ra ngoại lệ Khối catch x c định dạng ngoại lệ nó c thể bắt và chứa mã giải quyết 31 Tổng kết      Nếu không xảy ra ngoại lệ nào, tất c c c. ..  Người lập trình c thể tạo lớp ngoại lệ mới C+ + sử dụng c ng một c chế cho c c ngoại lệ người dùng x c định và ngoại lệ c sẵn Phải ném ra c c ngoại lệ người dùng x c định qua lệnh throw Mọi lớp đều c thể là lớp ngoại lệ 20 Ném ra và ném tiếp ngoại lệ  Khi ngoại lệ xảy ra trong khối try  Điều  khiển ngay lập t c đư c chuyển tới khối catch Trong khối catch  Quản lý ngoại lệ ho c xử lý c thể... try/catch làm vi c, ngoại lệ phải đư c ném ra từ khối try  C pháp chung để ném ra ngoại lệ là: throw expression; ở đây biểu th c là giá trị hằng, biến ho c đối tượng 11 Ném ra ngoại lệ   Đối tượng đư c ném ra c thể là  Đối tượng x c định  Đối tượng n c danh Trong C+ +  Ngoại lệ là giá trị  Throw là từ khóa 12 Ném ra ngoại lệ: 13 Thứ tự c a c c khối catch  Khối catch c thể bắt  Tất c c c ngoại... Chương trình c thể đưa ra thông báo lỗi tương ứng và kết th c 25 Sửa lỗi và tiếp t c  Trong một số trường hợp, người lập trình muốn sửa lỗi và tiếp t c chương trình  Thí dụ, nếu người dùng vào chữ c i trong phần số   Kênh vào sẽ chuyển sang trạng thái failt C n thêm một số mã để giữ dấu nh c người dùng vào tới khi dữ liệu vào hợp lệ 26 Log và tiếp t c chương trình  Thí dụ, nếu chương trình đư c thiết... nhân ho c theo dõi vệ tinh  Không  thể kết th c nếu c ngoại lệ xảy ra Khi ngoại lệ xảy ra  Chương trình nên viết ngoại lệ ra và tiếp t c chạy 27 Xem xét stack ngoại lệ  Khi ngoại lệ đư c ném ra trong hàm, hàm c thể như sau:  Không  Xử làm gì lý một phần ngoại lệ rồi ném tiếp ra ngoài  Ném ra ngoại lệ mới 28 Xem xét stack ngoại lệ  Trong c c trường hợp này stack ngoại lệ c a hàm gọi đư c cởi ra ...  Exception: kiện không mong muốn xảy th c chương trình Nếu ngoại lệ xảy th c  Người lập trình cung c p mã để kết th c chương trình  Chương trình kết th c với thông báo lỗi thích hợp  C thể... lỗi C chế C+ + để quản lý lỗi  Sử dụng khối try/catch  Ngoại lệ phải ném từ khối try bị bắt khối catch  C+ + cung c p hỗ trợ vi c quản lý ngoại lệ thông qua phân c p lớp Khối try/catch  C c. .. Khối catch bắt tất dạng ngoại lệ  C pháp chung khối try/catch Khối try/catch  Nếu ngoại lệ ném từ khối try  Tất khối catch cho khối try bị lờ  Vi c th c tiếp t c với lệnh sau khối catch sau

Ngày đăng: 28/03/2016, 01:05

Mục lục

  • Lập trình hướng đối tượng

  • Quản lý ngoại lệ trong chương trình

  • Cơ chế của C++ để quản lý lỗi

  • Ném ra ngoại lệ

  • Ném ra ngoại lệ:

  • Thứ tự của các khối catch

  • Khối try/catch trong chương trình:

  • Sử dụng các lớp ngoại lệ trong C++

  • Sử dụng lớp ngoại lệ trong C++

  • Lớp ngoại lệ người dùng

  • Ném ra và ném tiếp ngoại lệ

  • Các kỹ thuật quản lý ngoại lệ

  • Kết thúc chương trình

  • Sửa lỗi và tiếp tục

  • Log và tiếp tục chương trình

  • Xem xét stack ngoại lệ

Tài liệu cùng người dùng

Tài liệu liên quan