Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
This is our first modern exception. How stirring!
authorMartin Quinson <martin.quinson@loria.fr>
Sat, 25 Aug 2018 12:23:50 +0000 (14:23 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Sat, 25 Aug 2018 12:25:56 +0000 (14:25 +0200)
And this is compatible with the existing user code, as not all catch
locations were converted yet.

src/kernel/activity/SleepImpl.cpp
teshsuite/s4u/actor-autorestart/actor-autorestart.cpp

index 4d807cc..2809eeb 100644 (file)
@@ -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()) {
index 00eee52..ecfaf8b 100644 (file)
@@ -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");
   }
 }