Ôn tập: phép chia an toàn
Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 53 trên 56.
Thử thách
DễTạo một chương trình thực hiện phép chia an toàn bằng cách xử lý ngoại lệ toàn diện. Thử thách này sẽ kiểm tra khả năng kết hợp thiết kế hàm (function) với xử lý ngoại lệ (exception handling) để xử lý khéo léo lỗi chia cho 0.
Chương trình sẽ nhận các đầu vào sau:
- Một giá trị double
numeratorbiểu thị số cần chia - Một giá trị double
denominatorbiểu thị số dùng để chia
Chương trình của bạn cần:
- Tạo một hàm có tên
safeDividenhận hai tham số kiểu double (numeratorvàdenominator) - Bên trong hàm, kiểm tra xem
denominatorcó bằng 0 hay không - Nếu
denominatorbằng 0,throwchuỗi"Division by zero error" - Nếu
denominatorkhác 0, tính kết quả phép chia và trả về kết quả dưới dạng double - Trong hàm main, gọi
safeDividebên trong khốitryvới các giá trị đầu vào - Dùng khối
catchđể xử lý ngoại lệ chuỗi được ném ra - In thông báo phù hợp tùy theo phép chia thành công hay thất bại
Dùng chính xác định dạng đầu ra sau:
Khi phép chia thành công:
Result: [division_result]Khi xảy ra lỗi chia cho 0:
Error: Division by zero errorHãy nhớ rằng khi denominator bằng 0, hàm của bạn cần ngay lập tức throw một ngoại lệ trước khi thực hiện phép chia. Khối catch cần chỉ định kiểu const char* để xử lý chuỗi ký tự được ném ra. Khi một ngoại lệ được ném ra, chương trình sẽ chuyển thẳng từ câu lệnh throw đến khối catch tương ứng, ngăn việc chia cho 0 và cho phép chương trình xử lý lỗi một cách an toàn thay vì gặp sự cố.
Tự làm thử
#include <iostream>
using namespace std;
int main() {
// Đọc đầu vào
double numerator, denominator;
cin >> numerator >> denominator;
// TODO: Viết code tại đây
// Tạo hàm (function) safeDivide phía trên main()
// Dùng khối lệnh try-catch để xử lý ngoại lệ
return 0;
}Tất cả bài học trong Logic và luồng chương trình
1Con trỏ và bộ nhớ
Con trỏ là gì?Toán tử lấy địa chỉToán tử giải tham chiếuCon trỏ nullCon trỏ và mảngBộ nhớ động với newGiải phóng bộ nhớ với deleteÔn tập: luyện tập về con trỏ2Vector (mảng động)
Giới thiệu std::vectorTạo vectorThêm phần tửTruy cập phần tửKích thước vectorDuyệt bằng vòng lặp forVòng lặp for dựa trên phạm viXóa phần tửÔn tập: các thao tác với vector5Dự án: Công cụ quản lý hàng tồn kho
Thiết lập dự ánThêm và cập nhật mặt hàng8Xử lý lỗi cơ bản
Giới thiệu về ngoại lệKhối lệnh 'try' và 'catch'Từ khóa 'throw'Các kiểu ngoại lệ khác nhauBộ xử lý bắt mọi ngoại lệÔn tập: phép chia an toàn3Dự án: Công cụ danh sách công việc
Tổng quan dự ánThêm công việc6Tập hợp (các phần tử duy nhất)
Giới thiệu std::setTạo tập hợp và thêm phần tửKiểm tra phần tửXóa phần tửDuyệt qua tập hợpÔn tập: các số duy nhấtTự luyện tập: Trình biên dịch C++ online