NVelocity: невозможно прочитать из закрытого TextReader

Только начал работать с NVelocity (v1.1.1), и, похоже, все работает нормально.

Есть только одна маленькая вещь, которая меня раздражает. Я настроил VS2010 так, чтобы он прерывался каждый раз, когда возникает исключение, даже если оно где-то обрабатывается, и при выполнении следующего кода он всегда прерывается при вызове Evaluate, заявляя, что он «не может прочитать из закрытого TextReader» (ObjectDisposedException ). У меня нет исходного кода для NVelocity, поэтому я не могу отлаживать.

Я где-то пропустил настройку, которая вызывает это? Это просто безобидная ошибка в NVelocity? Результат получается отличный, мне просто кажется, что что-то не так.

var velocity = new VelocityEngine();
var properties = new ExtendedProperties();
var context = new VelocityContext(fieldValues);
properties.AddProperty("velocimacro.library", string.Empty); // no library
velocity.Init(properties);

using (var writer = new StringWriter())
{
  velocity.Evaluate(context, writer, null, templateContents);
  return writer.ToString();
}

Трассировка стека исключений:

в System.IO.__Error.ReaderClosed() в System.IO.StringReader.Read(Char[] буфер, индекс Int32, счетчик Int32)
в NVelocity.Runtime.Parser.VelocityCharStream.FillBuff() в c:\. ..\src\NVelocity\Runtime\Parser\VelocityCharStream.cs:строка 313


person bernhof    schedule 15.03.2012    source источник


Ответы (1)


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

person Mauricio Scheffer    schedule 15.03.2012
comment
Спасибо за ссылку на источник, я сам посмотрю на специфику! - person bernhof; 19.03.2012
comment
@Bernhof: итог: это не настоящая проблема. Прочтите об исключениях первого шанса и о том, как их отключить в отладчике. - person Mauricio Scheffer; 19.03.2012
comment
Я знаю. Мне просто любопытно узнать, почему возникает исключение. Первый шанс или нет, исключения должны создаваться только в исключительных ситуациях. И мой пример действительно не кажется таким уж исключительным. - person bernhof; 19.03.2012
comment
@Bernhof: NVelocity довольно старая, и она была перенесена с Java Velocity, которая еще старше ... так что во многих местах код отстой :) - person Mauricio Scheffer; 19.03.2012