ich stehe mal wieder vor einem Problem, bei dem ich einen Denkanstoß brauche. Vor kurzem habe ich unter Projekte meine Logfileklasse vorgestellt. Erstmal ein bisschen Code um das Problem zu verdeutlichen:
Code: Alles auswählen
int sqlite::check(int ret_value)
{
log.add("Entering check()");
switch(ret_value)
{
case DATATYPE_NOT_HANDLED : log.add("SQL-W: Datatype not handled!");
throw std::runtime_error(
"Wrapper Error: Datatype not handled!");
break;
case DATATYPE_UNKNOWN : log.add("SQL-W: Datatype unknown!");
throw std::runtime_error(
"Wrapper Error: Datatype unknown!");
break;
case SQLITE_OK : log.add("SQL-W: SQLITE_OK");
return WRAPPER_OK;
break;
default : log.add("SQL-W:SQL-Error:" +
*sqlite3_errmsg(db_handle));
throw std::runtime_error(
sqlite3_errmsg(db_handle));
}
log.add("Leaving check()");
return WRAPPER_ERROR;
}
Dieser Code stammt aus der aktuellen Version meiner SQLitewrapper Klasse. Mein Problem besteht jetzt darin, das zwar die throw Anweisungen problemlos befolgt werden, aber die Fehlermeldung die über log.add geschrieben werden soll, nicht mehr in der Datei landet.
Die aktuelle Version von log.add sieht so aus:
Code: Alles auswählen
void logfile::add(const std::string &input)
{
check_size();
boost::posix_time::ptime pt =
boost::posix_time::second_clock::local_time();
logfile::logstream << input << " "
<< boost::posix_time::to_simple_string(pt)
<< std::endl;
}
Gruß Bebu