Kód Ext error

Z CHWiki

Přejít na: navigace, hledání

[editovat] ERROR

Soubor "error" definuje makro error jako konstrukci objektu typu ext::local_error pro snadné použití s klíčovým slovem throw nebo např. new. Použití slova error je tímto makrem prakticky omezeno pouze na specifické konstrukce, tedy nelze použít třeba jako název proměnné.

[editovat] Použití

#include "error"

// ...

try {
   // ...
   if (...)
       throw error;

   // ...
   if (...)
       throw error;

   // ...
   if (...)
       throw error;
   
} catch (const ext::local_error & x) {

   // x.file je jméno souboru
   // x.line je číslo řádku, na kterém k výjimce došlo

} catch (const ext::exception & x) {

   // pouze x.what ();
};


[editovat] Zdrojový kód

[error]

#ifndef EXT_ERROR
#define EXT_ERROR

#include "extexcept"
#include "echo"

namespace ext {

   // ext::local_error
   // - error throw by "throw error", contains 
   
   class local_error : public ext::exception {
       public:
           const std::string   file;
           const unsigned int  line;
       
       public:
           explicit local_error (const std::string & _f, unsigned int _l)
               :   ext::exception (_f + " [" + ext::echo (_l) + "]"),
                   file (_f),
                   line (_l) {};
                   
           ~local_error () throw () {};
   };
};

#define error ext::local_error (__FILE__, __LINE__)
#endif