diff --git a/eo/src/eoGeneration.h b/eo/src/eoGeneration.h index 9da4ae67..01d2bbf2 100644 --- a/eo/src/eoGeneration.h +++ b/eo/src/eoGeneration.h @@ -26,7 +26,7 @@ #define eoGeneration_h //----------------------------------------------------------------------------- - +#include #include // eoPop #include #include // eoSelect, eoTranform, eoMerge @@ -56,15 +56,19 @@ template class eoGeneration: public eoAlgo /// Apply one generation of evolution to the population. virtual void operator()(eoPop& pop) { - eoPop breeders; - select(pop, breeders); - transform(breeders); - eoPop::iterator i; - // Can't use foreach here since foreach takes the - // parameter by reference - for ( i = breeders.begin(); i != breeders.end(); i++) - evaluator(*i); - replace(breeders, pop); + eoPop breeders; + try { + select(pop, breeders); + transform(breeders); + eoPop::iterator i; + // Can't use foreach here since foreach takes the + // parameter by reference + for ( i = breeders.begin(); i != breeders.end(); i++) + evaluator(*i); + replace(breeders, pop); + } catch ( exception& e ) { + throw runtime_error( e.what() ); + } } /// Class name.