У меня есть класс, который в основном состоит из ввода строки ввода и последующего вывода данных в определенном формате.Результатом этого класса является переопределение 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;
}
}