Tiêu đề <stdexcept>
xác định một vài ngoại lệ tiêu chuẩn. Tuy nhiên, tôi gặp khó khăn khi quyết định khi nào nên sử dụng ngoại lệ nào. Có hướng dẫn tốt để được tìm thấy trên mạng không? Tôi cố gắng minh họa vấn đề của tôi với một ví dụ:C++ Khi nào nên sử dụng ngoại lệ (chuẩn) nào?
Một hàm có độ dài của một vectơ (vật lý) và một góc (giữa 0 và pi) để trả lại vectơ mới. Nếu góc âm là
- A
std::invalid_argument
, vì góc âm không hợp lệ? - A
std::logic_error
, vì các góc âm không có ý nghĩa trong trường hợp này? - A
std::out_of_range
, vì các góc âm nằm ngoài phạm vi cho phép của các góc? - A
std::domain_error
, vì hàm toán học không được xác định trên các góc âm. - Hoặc tôi có nên xác định ngoại lệ tùy chỉnh không?
(Trong trường hợp ai tự hỏi: Tôi đang cố gắng để thay đổi tọa độ trong một hộp mô phỏng triclinic, mà thực sự là ba độ dài và ba góc - xem here nếu bạn quan tâm.)
Điều này hoàn toàn tùy thuộc vào bạn. Không có vấn đề gì ngoại lệ được ném, trừ khi họ đang bị bắt họ sẽ hủy bỏ vấn đề. Vì vậy, bất cứ điều gì ngoại lệ bạn quyết định bạn sẽ ném, bạn sẽ bắt một nơi nào đó. Vì vậy, nó hoàn toàn tùy thuộc vào bạn. –
Bạn có thể muốn giới thiệu các loại ngoại lệ của riêng bạn để phân biệt lỗi của bạn với các loại tiêu chuẩn. – Jarod42
Ok, tôi phải tìm ra hướng dẫn của riêng mình sau đó. Có mô tả chi tiết hơn về trường hợp ngoại lệ tiêu chuẩn nào được đề xuất hay không. Các mô tả trên cả [cppreference.com] (http://en.cppreference.com/w/cpp/header/stdexcept) và [cplusplus.com] (http://www.cplusplus.com/reference/stdexcept/) cực kỳ ngắn gọn. –