Feb. 16th, 2011

metaclass: (Default)
Забыл добавить using для IEnumerator в функции intersperse для IEnumerable.
Убил два часа разбираясь, почему после одного исключения при ленивой загрузке графа объектов из базы в F# дальше начинают сыпаться другие исключения, насчет незакрытого DataReader. Оказалось - расставлял функцией intersperse запятые между именами полей, для отладочной печати списка, имена полей были ленивые и на одном из вызовов сыпалось первое исключение, а sprintf "%A", оказывается, не кидает наверх исключения в ToString(), поэтому прога не валилась, а дальше начинали сыпаться исключения из-за неубитого IEnumerator, внутри которого жил DataReader.
И все это блин в сплошной ленивости и 30-уровневых стеках вызова, из которых две трети - сплошные нечитабельные автосгенерированные компилятором F# замыкания.
В общем, в обычных приложениях отладчик не нужен, а в таких он еще и бесполезен - скачет по программе произвольным образом по причине ленивости. И стеки вызова при исключениях тоже бесполезны, потому что вся программа представляет собой адский граф фильтров для потоков данных из БД в конечный результат.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 9th, 2025 09:11 pm
Powered by Dreamwidth Studios