OLD-idmessage-112131

#1928492
ArchiMage
Участник

[quote name='Данилка'] Ты говоришь открывать поток до блока Try-Catch. Но, по моему замыслу, в моей программе все процедуры полностью должны быть заключены в блок Try.[/quote]Ты думаешь, такой замысел верен? Если да, тогда будь добр, проработай обработку ошибок так, чтобы каждая известная ошибка была тобой обработана не только без аварийного завершения программы, но и с точным описанием места и причины, где и почему произошла ошибка. Я так подозреваю, люди, описывавшие генерируемые исключения, котоыре ты ловишь, уже проработали это вопрос. Тебе осталось только ловить нужные и решать, что делать программе или предоставить это право пользователю.[quote name='Данилка'] В случае ошибки номер процедуры и описание ошибки передается в процедуру Errors, где она (ошибка0 и обрабатывается. Благодаря этому в будущем, после сбоев, мне смогут дать лог с ошибками, в которых я сразу увижу конкретное место.[/quote]Я так предполагаю, как только ты начнешь усложнять проект и разделять его на отдельные классы, тебе не поможет никакой величины блок Errors, т.к. реализация многих вещей будет инкасулирована в отдельных классах и блок Errors просто не сможет уже принять решение о том, что делать с той или иной ошибкой. У самого под носом система, спроектированная таким образом – отладка почти невозможна из-за сокрытия причины ошибки.[quote name='Данилка']Но. Если открыть поток вне этого блока, теоретически может произойти необработанное исключение. А именно – ошибка при открытии потока. Например, когда файл уже открыт.Собственно, у меня такая ошибка уже вылезала, именно по этому я и заключил ее в блок Try…[/quote]Что ты должен сделать при ошибке открытия файла? Сообщить пользователю? Ну и пусть этим занимается интерфейс – сообщит необработанное исключение метода, тем более оно достаточно хорошо описано и ты не сможешь автоматически исправить эту ситуацию. А если ошибка произойдет уже при дальнейшей обработке открытого потока, там уж сам Бог велел подумать о двух типах ошибок – обрабатываемых и нет. Отработку нехороших результатов вторых помещай в блок finally, те, что можно обработать – в блок catch, первые поднимай наверх, все равно без толку внутри класса заниматься их анализом. А если так уж охота иметь логи – регистрируй стандартный поток вывода ошибок в файл и не парься с реализацией Errors, а выводи ошибки в поток и либо продолжай, либо прекращай работу при критиках…Так, записки на коленках, остающиеся от проектирования больших систем.