[Buổi 30][Template & ngoại lệ][Lab] Bài 2: Safe Division
Safe Division
Bối cảnh
Chia cho 0 là tình huống lỗi cần tách khỏi flow bình thường.
Viết hàm ném exception và bắt ở main.
Yêu cầu
safeDivide(a,b)némruntime_errornếu b==0.- Main try/catch.
- Nếu hợp lệ in kết quả 2 decimals; nếu lỗi in
ERROR.
Yêu cầu tổ chức code
Phải có throw và try/catch.
Online Judge chấm output. Với bài nhạy về cấu trúc OOP, giảng viên review thêm source code để xác nhận học viên luyện đúng kỹ năng.
Input
Hai số double a b.
Output
Một dòng.
Ràng buộc
|a|,|b|≤1e12.
Ví dụ 1
Input
10 2
Output
5.00
Giải thích
10 chia2 là hợp lệ nên hàm thực hiện phép chia và trả5.0; format hai chữ số thành 5.00. Không exception nào được ném, control flow đi theo nhánh bình thường.
Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.
Ví dụ 2
Input
1 0
Output
ERROR
Giải thích
Mẫu số0 làm precondition thất bại. Hàm ném exception, try/catch ở tầng gọi bắt lỗi và chuyển thành output ERROR thay vì chương trình crash hoặc thực hiện phép chia không hợp lệ.
Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.
Thông tin học tập
- Module: M08
- Buổi: B30
- Loại bài: LAB
- Độ khó: Medium
- Concepts: exceptions, throw, try catch, runtime_error
- Giới hạn kiến thức: B01-B30
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments