63 void SetMaxErrors(std::size_t max_errors) { max_errors_ = max_errors; }
87 policy = callback_(error);
100 const std::string &component =
"") {
105 [[noreturn]]
void ReportFatal(
const std::string &message,
double sim_time = 0.0) {
110 error.
time = sim_time;
114 log_service_.FlushAndClear();
123 auto it = error_counts_.find(severity);
124 return it != error_counts_.end() ? it->second : 0;
129 std::size_t total = 0;
130 for (
const auto &[severity, count] : error_counts_) {
144 [[nodiscard]] std::optional<SimulationError>
GetFatalError()
const {
return fatal_error_; }
158 error_counts_.clear();
159 fatal_error_.reset();
166 std::map<Severity, ErrorPolicy> policies_;
167 std::map<Severity, std::size_t> error_counts_;
168 std::optional<SimulationError> fatal_error_;
169 std::size_t max_errors_ = 100;
192 : handler_(handler), sim_time_(sim_time), component_(std::move(component)) {}
197 template <
typename F>
auto Execute(F &&func) ->
decltype(func()) {
200 }
catch (
const Error &e) {
201 handler_.Report(e, sim_time_, component_);
209 std::string component_;
Consolidated error handling for Icarus.
Unified logging service for Icarus.
Central error handler integrating logging and exceptions.
Definition ErrorHandler.hpp:44
void SetMaxErrors(std::size_t max_errors)
Set maximum errors before automatic abort.
Definition ErrorHandler.hpp:63
void Reset()
Clear error counts (for new run).
Definition ErrorHandler.hpp:157
ErrorPolicy Report(const SimulationError &error)
Definition ErrorHandler.hpp:69
void SetPolicy(Severity severity, ErrorPolicy policy)
Set default policy for each severity level.
Definition ErrorHandler.hpp:57
void SetCallback(ErrorCallback callback)
Set callback for error handling (can override default policy).
Definition ErrorHandler.hpp:60
bool ProcessBufferedErrors()
Definition ErrorHandler.hpp:151
std::size_t GetErrorCount(Severity severity) const
Get count of errors at each severity.
Definition ErrorHandler.hpp:122
ErrorPolicy Report(const Error &exception, double sim_time=0.0, const std::string &component="")
Report an exception, extracting info automatically.
Definition ErrorHandler.hpp:99
void ReportFatal(const std::string &message, double sim_time=0.0)
Report a fatal error and trigger crash.
Definition ErrorHandler.hpp:105
ErrorHandler(LogService &log_service)
Definition ErrorHandler.hpp:46
std::size_t GetTotalErrorCount() const
Get total error count (WARNING and above).
Definition ErrorHandler.hpp:128
bool ShouldAbort() const
Check if simulation should abort.
Definition ErrorHandler.hpp:139
std::optional< SimulationError > GetFatalError() const
Get the first fatal error (if any).
Definition ErrorHandler.hpp:144
auto Execute(F &&func) -> decltype(func())
Execute a callable, catching and reporting exceptions.
Definition ErrorHandler.hpp:197
ErrorScope(ErrorHandler &handler, double sim_time, std::string component)
Definition ErrorHandler.hpp:191
Base class for all Icarus exceptions.
Definition Error.hpp:52
SimulationError toSimulationError(double time=0.0, const std::string &component="") const
Convert to SimulationError for ErrorHandler integration.
Definition Error.hpp:63
Unified logging service for Icarus.
Definition LogService.hpp:289
Definition AggregationTypes.hpp:13
std::function< ErrorPolicy(const SimulationError &)> ErrorCallback
Error handler callback signature.
Definition ErrorHandler.hpp:34
ErrorPolicy
Error handling policy.
Definition ErrorHandler.hpp:24
@ Pause
Pause simulation, allow resume.
Definition ErrorHandler.hpp:26
@ Crash
Immediate termination (for fatal errors).
Definition ErrorHandler.hpp:28
@ Abort
Clean shutdown with debrief.
Definition ErrorHandler.hpp:27
@ Continue
Log and continue (for warnings).
Definition ErrorHandler.hpp:25
Severity
Definition Error.hpp:22
@ WARNING
Warning (may trigger graceful degradation).
Definition Error.hpp:24
@ FATAL
Fatal (simulation must stop).
Definition Error.hpp:26
@ INFO
Informational (logged, no action).
Definition Error.hpp:23
@ ERROR
Error (simulation may continue with fallback).
Definition Error.hpp:25
LogLevel SeverityToLogLevel(Severity severity)
Convert error severity to log level.
Definition ErrorLogging.hpp:19
LogLevel
Log severity levels.
Definition Console.hpp:35
@ Warning
Potential issues.
Definition Console.hpp:40
@ Info
Normal operation.
Definition Console.hpp:38
@ Fatal
Unrecoverable errors.
Definition Console.hpp:42
@ Error
Recoverable errors.
Definition Console.hpp:41
Severity severity
Definition Error.hpp:34
std::string message
Definition Error.hpp:35
std::string component
Definition Error.hpp:36
double time
Definition Error.hpp:37