Retour au développement C++ après un hiatus de 12 ans. J'utilise le logiciel CLion de JetBrains, ce qui est génial car il fournit beaucoup d'informations sur les problèmes possibles de ma conception de classe. L'un des avertissements que j'obtiens dans la déclaration de lancement de constructeur de ma classe est: Thrown exception type is not nothrow copy constructible
. Voici un exemple de code qui génère cet avertissement:Gestion "Le type d'exception levée n'est pas nothrow copy constructible" Avertissement
#include <exception>
#include <iostream>
using std::invalid_argument;
using std::string;
class MyClass {
public:
explicit MyClass(string value) throw (invalid_argument);
private:
string value;
};
MyClass::MyClass(string value) throw (invalid_argument) {
if (value.length() == 0) {
throw invalid_argument("YOLO!"); // Warning is here.
}
this->value = value;
}
Cette pièce de code compile et je peux la tester unitaire. Mais je voudrais vraiment beaucoup me débarrasser de cet avertissement (afin de comprendre ce que je fais de mal, même s'il compile).
Merci
Pourquoi utilisez-vous les spécifications de lancer? Ils ont été obsolète. https://stackoverflow.com/questions/13841559/deprecated-throw-list-in-c11 –
Les spécificateurs lanceurs de douleur apportent. Beaucoup de douleur. Mieux vaut sans, vous êtes. – user4581301