Итак, у меня возникла небольшая проблема. Мне было любопытно, есть ли у кого-то дополнительный вклад, который они могут пожелать дать по этому проекту.Кодирование кода ошибки, требуется ввод
У меня есть интерфейс ILog, который имеет два метода, открытых для части кода ошибки, составляющей код. FlagError и GetErrorCode; FlagError устанавливает бит в целое число, каждый бит представляет собой некоторую ошибку. GetErrorCode (который будет возвращаемым значением для метода Main) возвращает указанное целое число.
Я предположил сначала, используя enum
в каждом приложении, чтобы содержать список возможных ErrorCodes.
Но проблема в том, как именно я хотел бы передать пользователям, что код ошибки «XYZ» означает, что приложение попало в эти ненормальные состояния во время выполнения дружественным образом?
Илог Интерфейс: (методы записи имеют перегрузки)
interface ILog
{
void FlagError (int errorCode);
int GetErrorCode();
#region Other ILog Methods
void WriteError(string message);
void WriteWarning(string message);
void WriteInfo(string message);
void WriteDebug(string message);
#endregion
}
Вход Класс:
abstract class Log : ILog
{
public void
FlagError (int errorCode)
{
if (errorCode == 0 || errorCode == int.MinValue || errorCode != (errorCode & -errorCode))
{
throw new IndexOutOfRangeException();
}
if ((m_errorCode & errorCode) == errorCode)
return;
m_errorCode += errorCode;
}
public int
GetErrorCode()
{
return m_errorCode;
}
#region Other ILog Methods
}
Я предположил, используя атрибут каждого значения перечислений с описанием этой ошибки, а затем просто имея небольшой процесс или что-то, что поможет «разобрать» код ошибки в понятное для человека описание.
Но Idk, любые идеи?
Я видел перечисления, которые используют логику коммутатора, чтобы разобрать описания, но мой первый вопрос заключается в том, почему бы не использовать конкретные конкретные исключения для каждого типа ошибок? Если вы этого не делаете, потому что вы накапливаете набор ошибок, которые хотите вернуть, тогда код с битовой маской, который вы описываете, кажется мне эффективным. Но я лично использовал бы какой-то словарь всех ошибок для возврата. Битовая маска, хотя и эффективна, определенно не так проста для чтения. – Rake36
Это то, что вы пытаетесь сделать? http://stackoverflow.com/questions/164425/determining-if-enum-value-is-in-list-c – Rake36
Проблема с возвратом нескольких исключений заключается в том, что некоторые ошибки могут быть помечены без исключения, которое действительно выбрасывается, и я на самом деле не хотите идти «log.FlagError (новое AnonException (« This Happened »)); Но это хорошая идея. И нет, я не пытаюсь сделать то, что находится в ссылке. Кроме того, если вы хотите, я бы с удовольствием посмотрел бы на мой ответ. – Meiscooldude