Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Идея сайта... Стоит двигацца дальше?! (https://javascript.ru/forum/project/3686-ideya-sajjta-stoit-dvigacca-dalshe.html)

Kolyaj 06.10.2009 18:40

Цитата:

Сообщение от x-yuri
а, собственно, почему бы и нет?

Может потому, что code-style в js другой?

B~Vladi,
т.е. предлагается в каждый обработчик каждого события добавлять код обработки ошибок, который по сути будет console.log, т.к. нам нужно только узнать об ошибке?

B~Vladi 06.10.2009 18:50

Цитата:

Сообщение от Kolyaj
Может потому, что code-style в js другой?

Каждый дрочит так как хочет;)

Цитата:

Сообщение от Kolyaj
т.е. предлагается в каждый обработчик каждого события добавлять код обработки ошибок, который по сути будет console.log, т.к. нам нужно только узнать об ошибке?

Не совсем.
Предлагается возможность обработать ошибку события самому, если это нужно.
Если каждую ошибку обрабатывать не надо - можно установить свойство Debug для Event, передав туда код обработки. Этот Debug будет вызван в конце выполнения всех обработчиков. Если во время выполнения даётся указание прервать вызовы - Debug так же будет вызван, если есть ошибки.

Kolyaj 06.10.2009 18:54

Цитата:

Сообщение от B~Vladi
Каждый дрочит так как хочет

В команде-то пока не дрочил, я так понимаю? Все один да один? :)

Цитата:

Сообщение от B~Vladi
Предлагается возможность обработать ошибку на событие самому, если это нужно.

Мне нужно, чтобы браузер сообщил об ошибке, если она возникла, чтобы я ее потом исправил. В твоем варианте браузер мне ничего не сообщить, я сам должен заботиться о мониторинге массива errors.

B~Vladi 06.10.2009 18:57

Цитата:

Сообщение от Kolyaj
В команде-то пока не дрочил, я так понимаю?

В последнее время только этим и занимаюсь;)
Просто я настолько хороший кодер, что на это закрывают глаза:D
Цитата:

Сообщение от Kolyaj
Мне нужно, чтобы браузер сообщил об ошибке, если она возникла, чтобы я ее потом исправил.

Значит надо бросать исключение... Правильно?!
Цитата:

Сообщение от Kolyaj
В твоем варианте браузер мне ничего не сообщить, я сам должен заботиться о мониторинге массива errors.

этот массив существует только для того случая, когда ошибка ожидается...

e1f 06.10.2009 19:04

Kolyaj,
а стоит ли вообще с этим париться? Не скажется ли на производительности, если мы каждый обработчик будем совать try/catch, нужен он там или нет? Может, лучше я сам в обработчике и проверку сделаю, если надо?

Kolyaj 06.10.2009 19:25

Цитата:

Сообщение от B~Vladi
Значит надо бросать исключение... Правильно?!

Не нужно его ловить, чтобы потом не бросать.

Цитата:

Сообщение от e1f
а стоит ли вообще с этим париться?

Конечно не стоит, я уже написал
Цитата:

Сообщение от Kolyaj
Не выпендриваться и добавлять обработчики специально для этого придуманными методами: attachEvent/addEventListener.

Цитата:

Сообщение от e1f
Не скажется ли на производительности, если мы каждый обработчик будем совать try/catch, нужен он там или нет?

Скажется.

Цитата:

Сообщение от e1f
Может, лучше я сам в обработчике и проверку сделаю, если надо?

А откуда ты знаешь, где ошибка возникнет?

e1f 06.10.2009 19:27

Ну, если наш обработчик не использует никаких глобальных переменных, не опирается на приведение типов, все корректно проверяет -- как там может возникнуть ошибка? Заворачивать вызов каждой функции в try/cacth -- имхо не очень выход.

Kolyaj 06.10.2009 19:32

Цитата:

Сообщение от e1f
Ну, если наш обработчик не использует никаких глобальных переменных, не опирается на приведение типов, все корректно проверяет -- как там может возникнуть ошибка?

Действительно, и откуда они берутся, эти ошибки, ума не приложу. Сидишь, бывает, дебажишь и думаешь, и откуда она взялась.

x-yuri 06.10.2009 23:45

Цитата:

Сообщение от B~Vladi
onerror - если передаётся true - ошибка в обработчике не остановит вызов других. Если false - остановит. Если передаётся функция - обработчик ошибки и возвращает false - вызовы остановятся. Если ничего не передано - вызовы будут останавливаться. Так норм?!

я тебе такого не советовал. Я бы тебе Микеланджело процитировал: "Beauty is the purgation of superfluities". Вот ты все добавляешь функциональность и добавляешь, а она тебе нужна? Apache тоже становился все жирнее и жирнее, и вот теперь есть nginx, lighttpd. Фактически тебе эти обработчики ошибок в обработчиках не пригодятся. Тебе просто нужно сообщать об ошибках, если они возникают. Если обработчик рассчитывает на ошибки, он должен их сам перехватывать. Реальных ситуаций с взаимосвязанными обработчиками я не вижу (если ошибка в первом, второй не должен выполниться). Так как ты назначаешь служебный обработчик, значит он должен ловить исключения и отправлять их по-дальше: setTimeout(function () { throw ... }, 0); Только надо добавить информацию о том, где произошло исключение
p.s. я бы из всего функционала реализовал бы только fixEvents. Не приходит в голову конкретных ситуаций, когда мне остальное может пригодиться

B~Vladi 07.10.2009 10:24

Есть некоторые мысли. Да, действительно всё это лишнее. Как родится новый код - отпишусь.


Часовой пояс GMT +3, время: 11:15.