Avatar ·

Wann und warum sollte man noexcept in C++ tatsächlich verwenden?

Hallo Kollegen! Ich schreibe seit etwa einem Jahr C++ und nutze aktiv C++11/14. Ich sehe ständig das Schlüsselwort `noexcept` in Code und Bibliotheken, verstehe aber nicht ganz, wann man es wirklich anwenden sollte. Zum Beispiel schreibe ich eine einfache Wrapper-Klasse für die Arbeit mit Dateien. So definiere ich normalerweise Methoden: ```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() { // ... kann eine Ausnahme bei Lesefehlern werfen } void close() { if (file_) { fclose(file_); file_ = nullptr; } } private: FILE* file_; }; ``` Fragen: 1. Muss man den Destruktor mit `noexcept` markieren? Ich habe gehört, dass Destruktoren standardmäßig `noexcept` sind, aber sollte man es explizit schreiben?