我有一个基于printf
-style 格式的日志框架:
void Logger::debug(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
this->output(DebugLevel, fmt, args);
va_end(args);
}
如果Logger::output
抛出,编译器会正确展开堆栈,还是我需要va_end(args)
在 catch 子句中添加一个 try/catch 块?这可以改为 RAII'ed,还是太神奇va_end
了?如果可能,请包括对标准的引用。