using IStation.Epanet.Enums;
|
|
namespace IStation.Epanet
|
{
|
|
///<summary>Epanet exception codes handler.</summary>
|
public class EnException : Exception
|
{
|
|
///<summary>Array of arguments to be used in the error string creation.</summary>
|
private readonly object[] _arguments;
|
|
///<summary>Epanet error code.</summary>
|
protected readonly ErrorCode _code;
|
|
/// <summary>Get error code.</summary>
|
/// <value>Code id.</value>
|
public ErrorCode Code => _code;
|
|
///<summary>Constructor from error code id.</summary>
|
///<param name="code">Error code id.</param>
|
|
public EnException(ErrorCode code)
|
{
|
_arguments = null;
|
_code = code;
|
}
|
|
/// <summary>Constructor from error code id and multiple arguments.</summary>
|
/// <param name="code">Error code id.</param>
|
/// <param name="arg">Extra arguments.</param>
|
///
|
public EnException(ErrorCode code, params object[] arg)
|
{
|
_code = code;
|
_arguments = arg;
|
}
|
|
/// <summary>Constructor from error code id and inner exception.</summary>
|
/// <param name="code">Error code id.</param>
|
/// <param name="innerException"></param>
|
///
|
public EnException(ErrorCode code, Exception innerException)
|
: base(null, innerException)
|
{
|
_code = code;
|
}
|
|
///<summary>Handles the exception string conversion.</summary>
|
/// <returns>Final error string.</returns>
|
public override string Message
|
{
|
get
|
{
|
string format;
|
|
try
|
{
|
format = _code.GetMsg();
|
}
|
catch (Exception)
|
{
|
format = null;
|
}
|
|
|
if (format == null)
|
return string.Format("Unknown error message ({0})", _code);
|
|
return _arguments != null ? string.Format(format, _arguments) : format;
|
}
|
}
|
}
|
|
}
|