From: Martin Quinson Date: Sat, 25 Aug 2018 12:23:50 +0000 (+0200) Subject: This is our first modern exception. How stirring! X-Git-Tag: v3_21~172 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6e35d104466c5af941948ce10c8b0b9bfd514797?hp=3fe28b6efb5bb44f4822f3182bc59dfe8c6671b4 This is our first modern exception. How stirring! And this is compatible with the existing user code, as not all catch locations were converted yet. --- diff --git a/src/kernel/activity/SleepImpl.cpp b/src/kernel/activity/SleepImpl.cpp index 4d807ccc96..2809eeb8de 100644 --- a/src/kernel/activity/SleepImpl.cpp +++ b/src/kernel/activity/SleepImpl.cpp @@ -3,10 +3,10 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "simgrid/s4u/Host.hpp" - -#include "simgrid/kernel/resource/Action.hpp" #include "src/kernel/activity/SleepImpl.hpp" +#include "simgrid/Exception.hpp" +#include "simgrid/kernel/resource/Action.hpp" +#include "simgrid/s4u/Host.hpp" #include "src/kernel/context/Context.hpp" #include "simgrid/Exception.hpp" @@ -37,7 +37,8 @@ void simgrid::kernel::activity::SleepImpl::post() /* If the host running the synchro failed, notice it. This way, the asking * actor can be killed if it runs on that host itself */ result = SIMIX_SRC_HOST_FAILURE; - SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed"); + simcall->issuer->exception = + std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed")); } switch (surf_sleep->get_state()) { diff --git a/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp b/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp index 00eee5234e..ecfaf8b502 100644 --- a/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp +++ b/teshsuite/s4u/actor-autorestart/actor-autorestart.cpp @@ -13,13 +13,8 @@ static void dummy() try { simgrid::s4u::this_actor::sleep_for(200); XBT_INFO("I stop"); - } catch (xbt_ex& e) { - if (e.category == host_error) { - XBT_DEBUG("The host has died ... as expected. This actor silently stops"); - } else { - XBT_ERROR("An unexpected exception has been raised."); - throw; - } + } catch (simgrid::HostFailureException& e) { + XBT_DEBUG("The host has died ... as expected. This actor silently stops"); } }