Anonymous avatar Anonymous committed c3061ce

Catching bad_cast exceptions when Logger module does it's job

Comments (0)

Files changed (2)

 typedef libconfig::FileIOException file_io_ex;
 
 typedef std::bad_alloc alloc_ex;
+typedef std::bad_cast  cast_ex;
 
 typedef pqxx::work dbwork_t;
 typedef pqxx::connection dbconnection_t;
                   data.reset();
                   break;
                }
-               functions.logger->logwork(data);
+               try {
+                functions.logger->logwork(data);
+
+               } catch(cast_ex& ex) {
+                LOG(CRITIC) << "Logger " << functions.logger->internal->name <<": Cannot cast data packages at:" 
+                            << data.get() << ". Discarding data."; 
+               }
                data.reset();
 #ifdef DEBUG_QUEUES
                debug_queue_t_size("logger_queue",logger_queue);
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.