throwing exceptions on destructors causes call to terminate and should be fixed
as stated in: http://www.cs.technion.ac.il/users/yechiel/c++-faq/dtors-shouldnt-throw.html
throwing exceptions in destructors can result to calling terminate
although this is hard to control or enforce over time, we should I least try to fix this by always adding 'try catch' block on non-trivial destructors
this ticket should at least handle destructors which call functions accessing singleton instances (which usually are complex)