Здравствуйте, DarkEld3r, Вы писали:
DE>Да, в сложных случаях, надо писать дополнительный "ручной" код, но в общем, с ними всё равно удобнее.
Получается, что "простые случаи" — это когда мы просто игнорируем потенциальную ошибку.
ARK>>>Не, можно конечно просто плюнуть на полную корректность, как в С++ и поступают. DE>Ок, как должен выглядеть правильный вариант?
В том-то и дело, что нормального варианта я не знаю.
Пока что у меня такое мнение: с точки зрения корректности, правильно всегда вызывать вручную все методы типа close и, в случае возникновения сбоя, передавать ошибку дальше (исключениями, кодами возврата или еще чем — неважно). Плюс система типов должна гарантировать вызов этих методов, чтобы нельзя было забыть их вызвать (хотя в С++ гарантировать это невозможно). Но идеальным такой вариант я назвать не могу.
DE>Я уж не говорю о том, что даже если мы будем всегда сохранять все возникшие ошибки, то это не гарантирует их последующую корректную обработку. Кто помешает их просто игнорировать?
Это уже другой вопрос. Что там наверху, мы не знаем и не хотим знать. Главное, что свой код у нас написан корректно.