C # Обработка исключений - PullRequest
       3

C # Обработка исключений

0 голосов
/ 19 октября 2010

У меня есть класс, который в основном состоит из ввода строки ввода и последующего вывода данных в определенном формате.Результатом этого класса является переопределение ToString ().

В моем классе у меня есть статический метод string Print(string path), который считывает входные данные из плоского файла.Затем он анализирует эти входные данные и генерирует экземпляр класса для каждой записи в плоском файле.Затем для каждого экземпляра класса я вызываю class.ToString () и добавляю его к строителю строк, который в конечном итоге возвращается в пределах Print().

. Я гарантирую, что каждая запись имеет необходимые значения и соответствующий диапазон,если их нет, мне нужно скинуть исключение.Я никогда раньше не занимался обработкой исключений, поэтому я хочу знать, возможно ли то, что я хочу сделать.

Когда генерируется исключительная ситуация, я хочу взять все, что есть в строителе строк, добавить очистку закрывающего тега.и затем добавьте текст исключения к строителю строки, а затем вернитесь (текст ошибки исключения + stringbuilder.ToString () + FooterStuff).

Редактирование кода:

На самом деле это может быть плохой идеейЧтобы выдать исключение, мне может понадобиться просто использовать try {} catch {}, чтобы перехватить исключение, а затем добавить файл exception.message в начало строителя строк.Правда, я не знаю, исключения для меня довольно новые.

public class Record
{
    public string Name;
    public string Value;
    ...

    private Dictionary<string, LogFormat> = new LogFormat.Table();

    public static string Print()
    {
          Stringbuilder sb = new StringBuilder();
          var k = ReadLog();

          foreach (var x in k)
          {
               sb.Append(x.ToString());
          }

          return sb.ToString();
    }

    public override string ToString()
    {
        if (Table[Name].NeedsValue && (Value == String.Empty || Value == null))
        {
            throw new Exception();
        }

        return String.Format(Table[Name].Format, Attribute, Value);
    }
}

public class LogFormat
{
     public string Format;
     public bool NeedsValue = false;

     public Dictionary<string,LogFormat> Table()
     {
           Dictionary<string,LogFormat> dct = new Dictionary<string,LogFormat>();
           dct.Add("Address", new LogFormat(){Format = "Street:{0}\nCity:{1}"});
           ...
           return dct;
     }
}

Ответы [ 4 ]

2 голосов
/ 19 октября 2010

Я не совсем уверен, чего вы хотите достичь, но звучит так, будто вы хотите использовать finally

http://msdn.microsoft.com/en-us/library/zwc8s4fz(VS.71).aspx

0 голосов
/ 19 октября 2010

Вы можете попробовать что-то подобное:

private string YourMethod()
{
    var sb = new StringBuilder();

    try
    {
        // Do your stuff
    }
    catch (ASpecificException ex)
    {
        sb.Insert(0, ex.Message);
    }
    finally
    {
        sb.Append("YourFooter");
    }

    return sb.ToString();
}
0 голосов
/ 19 октября 2010

в вашем классе вы можете использовать throw , если что-то не так с вашим классом. И затем, когда вы работаете с вашим классом, вы должны использовать блок try-catch-finally

0 голосов
/ 19 октября 2010

Вам необходимо использовать блок try catch . См. Это ссылка .

Вы можете выполнять задачи очистки, которые вам нужны, в блоки catch и наконец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...