Si j'ai un code comme ce qui suit:Est-ce que le lancer C++ sans argument fonctionnera dans un autre cadre pour renvoyer une exception?
try {
doSomething();
} catch (...) {
noteError();
}
void noteError() {
try {
throw;
} catch (std::exception &err) {
std::cerr << "Note known error here: " << err.what();
} catch (...) {
std::cerr << "Note unknown error here.";
}
throw;
}
Est-ce que les exceptions sont jetés d'origine des deux endroits à l'intérieur du cadre inférieur de noteError()?
L'essayer et voir? Mon soupçon est qu'il ne compilera même pas mais je déteste les exceptions alors je ne sais pas vraiment. –
@Dash, "essayer et voir" ne donne pas toujours une réponse valide et confiante. Peut-être que c'est un comportement indéfini, et l'essayer prouve simplement que cela fonctionne sur votre machine et nulle part ailleurs. Ou, si cela échoue, c'est peut-être dû à un bogue du compilateur qui n'a pas réussi à implémenter cet aspect particulier de la norme. –
@Rob bon point, merci. "Essayez-le et voyez sur chaque compilateur que vous pouvez trouver, puis ajoutez le compilateur en ligne de Comeau à l'avant de cette liste"? :) –