Avatar ·

¿Cuándo y por qué realmente se debe usar noexcept en C++?

¡Hola, colegas! Llevo aproximadamente un año escribiendo en C++, usando activamente C++11/14. Constantemente veo en el código y las bibliotecas la palabra clave `noexcept`, pero no termino de entender cuándo realmente debe aplicarse. Por ejemplo, estoy escribiendo una clase envoltorio simple para trabajar con archivos. Así es como suelo definir los métodos: ```cpp class FileWrapper { public: FileWrapper(const std::string& filename) : file_(fopen(filename.c_str(), "r")) { if (!file_) throw std::runtime_error("Cannot open file"); } ~FileWrapper() { if (file_) fclose(file_); } bool is_open() const { return file_ != nullptr; } std::string read_line() { // ... puede lanzar una excepción en caso de error de lectura } void close() { if (file_) { fclose(file_); file_ = nullptr; } } private: FILE* file_; }; ``` Preguntas: 1. ¿Es necesario marcar `noexcept` en el destructor? He oído que los destructores son `noexcept` por defecto, pero ¿vale la pena escribirlo explícitamente?