Com fer servir i testejar les excepcions

From Es1

Jump to: navigation, search

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
}
Personal tools