-/* Copyright (c) 2010-2021. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-2022. The SimGrid Team. All rights reserved. */
/* 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. */
otherqueue = act->second;
} else { // Damn. Create the queue of that guy
otherqueue = new std::queue<ReplayAction*>();
- action_queues.insert({evtname, otherqueue});
+ action_queues.try_emplace(evtname, otherqueue);
}
otherqueue->push(action);
}
static void handle_action(ReplayAction& action)
{
XBT_DEBUG("%s replays a %s action", action.at(0).c_str(), action.at(1).c_str());
- action_fun function = action_funs.at(action.at(1));
+ action_fun function;
+ try {
+ function = action_funs.at(action.at(1));
+ } catch (const std::out_of_range&) {
+ xbt_die("Replay Error: action %s is unknown, please register it properly in the replay engine", action.at(1).c_str());
+ }
try {
function(action);
- } catch (const Exception& e) {
+ } catch (const Exception&) {
action.clear();
- xbt_die("Replay error:\n %s", e.what());
+ throw;
}
}