Я не уверен, что именно вы спрашиваете, но вот пример кода из моей собственной библиотеки:
/**
* \brief Convenient alias to create an exception.
*/
#define EXCEPTION(type,msg) type((msg), __FUNCTION__, __FILE__, __LINE__)
По сути, это позволяет мне написать:
throw EXCEPTION(InvalidParameterException, "The foo parameter is not valid");
Конечно, InvalidParameterException
- это класс, который я разработал и который требует дополнительных параметров для хранения функции, файла и строки, в которой было создано исключение.
Он имеет следующий конструктор:
InvalidParameterException::InvalidParameterException(
const std::string& message,
const std::string& function,
const std::string& file,
int line);
Конечно, если вы не хотите генерировать исключение, а просто выводите что-то в, скажем, файл журнала, вы, очевидно, можете использовать тот же «трюк».
Надеюсь, это поможет.