Com fer servir i testejar les excepcions
From Es1
Contents |
Un exemple de subclasse de std::exception
class AutorNoTrobat : public std::exception
{
public:
const char * what() const throw ()
{
return "Autor no existeix";
}
};
Llençant una excepció
void metodeQuePotFallar()
{
...
if (condicioDError) throw AutorNoTrobat();
...
};
Manegant l'excepció
try
{
unObjecte.metodeQuePotFallar();
}
catch (AutorNoTrobat & e) // Tipus concret no fos que agafem una que no sabem com manegar
{
// Manegament aqui
}
Testejant l'excepció
Cal comprovar dues coses: si arriba al FAIL vol dir que no ha llençat l'excepció, i si llença una excepció, cal comprovar que sigui la que esperem.
void testMetodeQuePotFallar_quanCondicioDError()
{
... // Test setup here
try
{
unObjecte.metodeQuePotFallar();
FAIL("Hauria d'haver llencat una excepcio");
}
catch (std::exception & e)
{
ASSERT_EQUALS("Autor no existeix", e.what());
}
... // Test clean up here
}