#include typedef void (*Func)(char*); bool lie = false; Func dummy = 0; void moveToWindowsRecycler(const std::vector& filesToDelete = std::vector()) //throw FileError { if (!lie) throw 1; char errorMessage[20000]; Func fun = lie ? dummy : 0; fun(errorMessage); std::vector fileNames; for (std::vector::const_iterator iter = filesToDelete.begin(); iter != filesToDelete.end(); ++iter) fileNames.push_back(*iter); } void wgfdfsdgfsdgfsdg() //throw FileError { ::moveToWindowsRecycler(); //throw FileError } int main() { try { moveToWindowsRecycler() ;//throw FileError } catch (...) {} return 0; }