es3000 писал(а) 19. Сентября 2006 :: 04:35: Цитата:Если в коде объект.Метод() произошла ошибка, значит надо найти откуда она выросла
То есть вы предлагаете запустить программу, протестировать эту ветку, и если есть ошибка, то исправлять. Но в каком виде мы получим ошибку? Опять же в виде исключения, которое будет отображаться в окне сообщений в 1С-ке. Это исключение может нарушить работу моей программы, и чтобы этого не произошло, надо опять таки обработать это исключение (Попытка/Исключение). А если учитывать, что программа может разрабатываться несколькими разработчиками, и мне может быть передан в качестве параметра любой класс, то получается что мне надо вызов каждого метода чужого класса заключать в обработчик исключения?
Неправильная логика. Эта тема освещается в любой книжке, где описывается обработка исключений.
Если была ошибка, то нужно видеть, где она возникла. И своевременно принимать решения. Если программа выполнится до конца, не смотря на то, что возникла ошибка, то как можно быть уверенным в работе этой программы? В ее результатах.
Обработка исключений для того и задумывалась, чтобы программы можно было писать так, как будто при их работе не возникает ошибок. При этом не надо отслеживать возникновение ошибок ВЕЗДЕ. И каждый тип исключения должен обрабатываться на своем уровне. В данном случае ошибка должна быть обработана не на уровне программы, а на уровне программиста.
Цитата:Так мы далеко зайдем... Гораздо проще было бы проверить для этого класса "ты такой-то?", если "да", то "делай то что нужно"...
То есть все таки было бы удобно определять какую функциональность реализует конкретный класс: или через механизм типа интерфейсов или просто через проверку наличия метода
Так интерфейсы - это и есть еще одна (или не одна) иерархия.
А пустые классы (в данном случае) - это и есть интерфейсы. Правда сейчас нельзя заставить класс, реализующий интерфейс иметь какой-то метод.