Kód Ext error
Z CHWiki
[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
