Vous ne devriez pas utiliser une exception ici. Ceci est évidemment pas un cas exceptionnel si vous devez être attendre partout où vous utilisez cette fonction!
Une meilleure solution serait d'obtenir la fonction pour retourner une instance de quelque chose comme ça. Dans debug (les développeurs supposant l'exercice des chemins de code qu'ils viennent écrit), ils vont se faire une assert s'ils oublient de vérifier si l'opération succeded ou non.
class SearchResult
{
private:
ResultType result_;
bool succeeded_;
bool succeessChecked_;
public:
SearchResult(Result& result, bool succeeded)
: result_(result)
, succeeded_(succeeded)
, successChecked_(false)
{
}
~SearchResult()
{
ASSERT(successChecked_);
}
ResultType& Result() { return result_; }
bool Succeeded() { successChecked_ = true; return succeeded_; }
}