2015-07-03 31 views

Trả lời

11

Nếu throw là tuyên bố bạn không thể sử dụng nó với toán tử có điều kiện.

return success() 
    ? computation() 
    : throw std::runtime_error("oops"); 

Lưu ý: đây có thể hoặc không có công dụng bên ngoài đang hoang mang.

Chỉnh sửa: một trường hợp hữu ích nằm trong các hàm constexpr nghiêm ngặt của C++ 11 chỉ có thể chứa một lệnh. Cảm ơn @dyp vì thông tin chi tiết!

+0

Một +1 khác cho ghi chú mà tôi đánh giá cao một người nào đó đang nhận xét. Dường như tôi không thể bỏ phiếu hai lần: ( – AlwaysLearning

+0

Cộng một, mặc dù đáng chú ý có lẽ rằng 'throw std :: runtime_error (" oops ")' là một biểu thức của loại 'void' và nó chỉ hoạt động trong một điều kiện do một số thủ thuật kỹ thuật ngăn cản tôi tự trả lời câu hỏi này – Bathsheba

+0

@Bathsheba 'return throw std :: runtime_error (" oops "), 0;' hoạt động quá (nhờ, toán tử dấu phẩy từ không gian bên ngoài!) – Quentin

Các vấn đề liên quan