Я использую .Net HtmlTextWriter
для генерации HTML.
try
{
htw.RenderBeginTag( HtmlTextWriterTag.Span );
htw.Write(myObject.GenerateHtml());
htw.RenderEndTag( );
}
catch (Exception e)
{
GenerateHtmlErrorMessage(htw);
}
В этом примере, если во время myObject.GenerateHtml()
сработает исключение ошибки, я сгенерирую хороший HTML-код ошибки, но ему будет предшествовать открывающий тег span
, который никогда не закрывается.
Я мог бы сделать рефакторинг следующим образом
try
{
string myHtml = myObject.GenerateHtml();
// now hope we don't get any more exceptions
htw.RenderBeginTag( HtmlTextWriterTag.Span );
htw.Write(myHtml)
htw.RenderEndTag( );
}
catch (Exception e)
{
GenerateHtmlErrorMessage(htw);
}
Теперь мой промежуток не открывается, пока я не выполнил тяжелую работу, но это просто кажется мне неловким. Есть ли способ сделать откат с HtmlWriter? Даже если бы мне пришлось использовать множество блоков.
В настоящее время я работаю в .Net 2.0, но обсуждение решений в 3.5 было бы в порядке.