21.247. Class ExceptionManager
Namespace: ArmoniK.Core.Common.Utils
Assembly: ArmoniK.Core.Common.dll
Manage exceptions at the whole application level. If too many exceptions are thrown, the application is stopped. When the application is stopped, a grace delay is in place to let all the running services to stop properly.
public class ExceptionManager : IDisposable, IHostApplicationLifetime, IHostLifetime
21.247.1. Inheritance
21.247.2. Implements
21.247.3. Inherited Members
object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()
21.247.4. Constructors
21.247.4.1. ExceptionManager(IHostApplicationLifetime, IOptions<ConsoleLifetimeOptions>, IHostEnvironment, IOptions<HostOptions>, ILogger<ExceptionManager>?, Options?)
Build an ExceptionManager
public ExceptionManager(IHostApplicationLifetime applicationLifetime, IOptions<ConsoleLifetimeOptions> consoleLifetimeOptions, IHostEnvironment environment, IOptions<HostOptions> hostOptions, ILogger<ExceptionManager>? logger = null, ExceptionManager.Options? options = null)
21.247.4.1.1. Parameters
applicationLifetime IHostApplicationLifetime
The lifetime of the application
consoleLifetimeOptions IOptions<ConsoleLifetimeOptions>
environment IHostEnvironment
hostOptions IOptions<HostOptions>
logger ILogger<ExceptionManager>?
The logger for the ExceptionManager
options ExceptionManager.Options?
Options for the ExceptionManager
21.247.5. Properties
21.247.5.1. ApplicationStarted
Triggered when the application host has fully started.
public CancellationToken ApplicationStarted { get; }
21.247.5.1.1. Property Value
21.247.5.2. ApplicationStopped
Triggered when the application host has completed a graceful shutdown. The application will not exit until all callbacks registered on this token have completed.
public CancellationToken ApplicationStopped { get; }
21.247.5.2.1. Property Value
21.247.5.3. ApplicationStopping
Triggered when the application host is starting a graceful shutdown. Shutdown will block until all callbacks registered on this token have completed.
public CancellationToken ApplicationStopping { get; }
21.247.5.3.1. Property Value
21.247.5.4. EarlyCancellationToken
CancellationToken that is triggered as soon as the application is stopped, or too many errors were thrown
public CancellationToken EarlyCancellationToken { get; }
21.247.5.4.1. Property Value
21.247.5.5. Failed
Whether there were too many errors
public bool Failed { get; }
21.247.5.5.1. Property Value
21.247.5.6. LateCancellationToken
CancellationToken that is triggered after a grace delay
public CancellationToken LateCancellationToken { get; }
21.247.5.6.1. Property Value
21.247.6. Methods
21.247.6.1. Dispose()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
public void Dispose()
21.247.6.2. FatalError(ILogger?, Exception?, string, params object?[])
Record a fatal error at the application level and trigger
public void FatalError(ILogger? logger, Exception? e, string message, params object?[] args)
21.247.6.2.1. Parameters
logger ILogger?
Logger used to log the error
e Exception?
Exception to log, if any
message string
Message to log
args object?[]
Arguments for the log message
21.247.6.2.2. Remarks
If logger is null, the logger of
this is used.
Following errors are logged as Warnings instead of Errors
21.247.6.3. RecordError(ILogger?, Exception?, string, params object?[])
Record an error at the application level
public void RecordError(ILogger? logger, Exception? e, string message, params object?[] args)
21.247.6.3.1. Parameters
logger ILogger?
Logger used to log the error
e Exception?
Exception to log, if any
message string
Message to log
args object?[]
Arguments for the log message
21.247.6.3.2. Remarks
If logger is null, the logger of
this is used.
If the maximum number of errors is reached, it will trigger the
21.247.6.4. RecordSuccess(ILogger?)
Decrease the number of recorded errors to indicate that the application is behaving correctly.
public void RecordSuccess(ILogger? logger = null)
21.247.6.4.1. Parameters
logger ILogger?
Logger used to log the success
21.247.6.4.2. Remarks
If logger is null, the logger of
this is used.
If the ExceptionManager is already in Failed state, this call does nothing.
21.247.6.5. Register()
Registers a class that has to call
public void Register()
21.247.6.6. StopApplication()
Requests termination of the current application.
public void StopApplication()
21.247.6.7. StopApplication(bool)
Requests termination of the current application.
public void StopApplication(bool external)
21.247.6.7.1. Parameters
external bool
Whether cancellation is external
21.247.6.8. StopAsync(CancellationToken)
Called from
public Task StopAsync(CancellationToken cancellationToken)
21.247.6.8.1. Parameters
cancellationToken CancellationToken
Used to indicate when stop should no longer be graceful.
21.247.6.8.2. Returns
A
21.247.6.9. UnregisterAndStop(ILogger?, string, params object?[])
Unregister a service using the
public void UnregisterAndStop(ILogger? logger, string message, params object?[] args)
21.247.6.9.1. Parameters
logger ILogger?
Logger used to log the success
message string
Message to be logged
args object?[]
Arguments for the log message
21.247.6.9.2. Remarks
If logger is null, the logger of
this is used.
Triggers the early Cts, and if all the recorded component have stopped, triggers the late Cts and stop the application lifetime.
21.247.6.10. WaitForStartAsync(CancellationToken)
Called at the start of
public Task WaitForStartAsync(CancellationToken cancellationToken)
21.247.6.10.1. Parameters
cancellationToken CancellationToken
Used to abort program start.
21.247.6.10.2. Returns
A