Вышла альфа-версия PHP4+Zend Engine 2 (4.3.0-dev)

Вы ждете Zend Engine 2?

  • Да! Давно пора

    Голосов: 11 64,7%
  • Он мне ненужен в текщих проектах

    Голосов: 5 29,4%
  • Нет

    Голосов: 1 5,9%
  • А что это такое?

    Голосов: 0 0,0%

  • Всего проголосовало
    17
  • Опрос закрыт .

Grey_EM

Guest
Автор оригинала: [VS]

На С++ иногда их использую, но есть более красивые и стабильные подходы к обработке ошибок.
Это какие же? Уж не ассерты ли :)
Красивые. :)
На Java приходится их использовать из-за идеологии языка, это порой очень не удобно.

А по поводу тормозов - они нигде скорости не прибавляют, быстро их реализовать довольно проблематично.
Угу. Но ты подумай, в с# эксепшены практически единственный способ реакции на ошибочную ситуацию.
Не задумывался почему?
 

Grey_EM

Guest
Автор оригинала: webdeveloper

Мне не понравилось то что они ввели новый вид конструкторов. Это значит что старые скоро станут не действительными и рано или поздно придется все переделывать.
Не придется. Это называется deprecated функциональность. Устаревшая.
Просто в новых проектах пиши, используя новый синтаксис.
Таким способом все языки развиваются. Что-то объявляется устаревшим и через 25 лет выкидывается :).
Видимо буду вообще без них писать.


Это зависит от того, что считать за аргумент. :)
 

Crazy

Developer
Автор оригинала: Grey_EM
Не задумывался почему?
Потому, что так ведет себя RTL. Но в своем коде ты можешь создавать и более старомодные схемы обработки ошибок.
 

Grey_EM

Guest
Автор оригинала: [VS]

Тем что если в блок try/catch помещать несколько вызовов функций, то не знаешь откуда именно пришла ошибка, другими словами для грамотной обработки обычно приходится писать try/catch чуть-ли не вокруг каждого вызова функции.
А классы исключений на что?
Перехватываешь нужный тебе класс в нужном месте.
Ну уж если у тебя все функции одно и тоже исключение бросают то тогда конечно придется тебе как-то иначе определять в чем проблема. Добавляешь к классу исключения код ошибки например.

После этого не понятно, зачем вообще нужно try/catch когда можно просто возвращать true/false из функции, и устанавливать в обьекте класса функции флаги с описанием ошибки.
Представь что ошибка чтения из файла произошла у тебя в методе, который вызывается методом который вызывает лично твой метод. И представь что тебе надо по разному реагировать в разных ситуациях на данную ситуацию, когда-то игнорировать, когда-то аборт делать, когда-то что еще. Как ты все это сделаешь при помощи простого true - false? Нет конечно извратиться можно, но насколько это будет удобно?
И накой мне из функции всегда что-то возвращать если по идее ей этого не нужно? Ну чисто функциональная у нее обязанность.
 

Grey_EM

Guest
Автор оригинала: Crazy

Потому, что так ведет себя RTL.
А ты не задумывался почему именно он так себя ведет?
Отвечать потому что так написали не надо :)
Я веду речь к тому, что во всех современных языках мех-м обработки ошибочных (исключительных) ситуаций практически одинаков.
Почему так и предлагаю подумать тем кому не нравятся исключения.
 

Crazy

Developer
Я знаю, почему он так себя ведет. Собственно, вся потребность в исключениях на самом деле формулируется основной короткой фразой: "Исключения предназначены для отделения в исходном тексте нормального потока выполнения от обработки аномальных ситуаций."

Вс остальное -- уже следствия.

Соответственно, бывают ситуации, где "обработка ошибок" есть "нормальный поток выполнения". Там исключения обчно идут лесом.

В большинстве же прикладных задач разделение это достаточно четкое.
 
Сверху