Avatar ·

Quand et pourquoi faut-il vraiment utiliser noexcept en C++ ?

Bonjour, collègues ! Je code en C++ depuis environ un an, j'utilise activement C++11/14. Je vois constamment le mot-clé `noexcept` dans le code et les bibliothèques, mais je ne comprends pas complètement quand il faut vraiment l'appliquer. Par exemple, j'écris une simple classe d'encapsulation pour travailler avec des fichiers. Voici comment je définis habituellement les méthodes : ```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() { // ... peut lancer une exception en cas d'erreur de lecture } void close() { if (file_) { fclose(file_); file_ = nullptr; } } private: FILE* file_; }; ``` Questions : 1. Faut-il marquer le destructeur avec `noexcept` ? J'ai entendu dire que les destructeurs sont `noexcept` par défaut, mais vaut-il la peine de l'écrire explicitement ?