throw
mà không có một lý lẽ chỉ nên được sử dụng bên trong một tuyên bố catch
, để rethrow đối tượng ngoại lệ bắt. Bạn mã cố gắng sử dụng nó bên ngoài tuyên bố catch
- thay vào đó bạn nên chọn một loại để ném, nếu nghi ngờ nó không phải là không hợp lý để bắt đầu với std::runtime_error
. Để có thêm tùy chọn, hãy xem here. Bạn cũng có thể ném các kiểu của riêng mình, nhưng thường là một ý tưởng tốt để lấy chúng từ một trong các kiểu được cung cấp bởi thư viện chuẩn, vì vậy mã khách hàng có cơ hội tốt hơn trong việc xác định xử lý thích hợp cho tất cả các lỗi tương tự về mặt logic, thay vì phải nắm bắt và xử lý chúng một cách riêng biệt và được cập nhật liên tục cho mỗi lỗi mới có thể xảy ra.
FWIW, chỉ số Standard nói trong 15,1/9:
Nếu không có ngoại lệ được hiện đang được xử lý, thực hiện một ném biểu hiện không có toán hạng gọi std::terminate()
.
Vì vậy, rất rõ ràng, câu trả lời cho "Cái gì được ném ..." là không thực hiện thao tác ném và thay vào đó, std::terminate
được gọi.
Nguồn
2015-07-13 06:45:03
Điều này đúng nhưng có trả lời được câu hỏi không? Bạn nói đúng "đừng làm thế", nhưng không phải là câu hỏi "nếu tôi làm thế thì sao?" – hvd
@hvd: đúng ... đã nhận được văn bản chính xác cùng nhau .... –
Vâng, có vẻ tốt. :) – hvd