Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   генерация и логирование ошибки (https://javascript.ru/forum/misc/46253-generaciya-i-logirovanie-oshibki.html)

Hapson 03.04.2014 15:05

Цитата:

Сообщение от nerv_
ща америку для тебя открою:

вообще ни о чем не говорит.
ООП? какой к черту ООП - это javascript. Здесь нет никаких ООП, есть только закос под ООП

nerv_ 03.04.2014 15:06

Цитата:

Сообщение от Hapson
ООП? какой к черту ООП - это javascript. Здесь нет никаких ООП, есть только закос под ООП

"php головного мозга" детектед :)

твою реализацию можно сломать одной строчкой
window.onerror = null;

Удачного дебага.

Hapson 03.04.2014 15:22

Цитата:

Сообщение от nerv_
window.onerror = null

есть другие способы?

Вопрос в другом - как сделать аналог trigger_error

Octane 03.04.2014 15:48

Ни Chrome, ни IE не добавляют в new Error информацию о строке и файле, только в фаерфоксе норм:
window.addEventListener("error", function (event) {
	alert(event);
});

function triggerError(error) {
	var event;
	try {
		event = document.createEvent("ErrorEvent");
	}
	catch (reason) {
		event = document.createEvent("Event");
	}
	if (event.initErrorEvent) {
		event.initErrorEvent("error", false, false, error.message, error.fileName, error.lineNumber);
	}
	else {
		event.initEvent("error", false, false);
		event.message = error.message;
		event.filename = error.fileName;
		event.lineno = error.lineNumber;
	}
	event.stack = error.stack;
	window.dispatchEvent(event);
}

triggerError(new Error("test error"));
Проверял в Chrome 35, Aurora 30 и IE11

Цитата:

Сообщение от Hapson
какой к черту ООП - это javascript. Здесь нет никаких ООП, есть только закос под ООП

ты тут такие глупости больше не пиши

dmitry111 03.04.2014 15:52

Цитата:

Сообщение от Hapson
ООП? какой к черту ООП - это javascript. Здесь нет никаких ООП, есть только закос под ООП

вот это вот очень неверное суждение, которым иногда злоупотребляют php-шники

Даже если в js чего-то нет (например Классов), то никто не мешает вам это реализовать самому!

js - это полноценный объектно-ориентированный язык!

dmitry111 03.04.2014 16:01

Цитата:

Сообщение от Octane
Ни Chrome, ни IE не добавляют в new Error информацию о строке и файле, только в фаерфоксе норм:


кроссбраузерные только:
Error.prototype.message
Error.prototype.name

Зачем строка?
А если весь скрипт в одну строку будет?

Можно ставить переменные-метки в частях кода и передавать эти метки в случае ошибки

Octane 03.04.2014 16:05

Цитата:

Сообщение от dmitry111
Зачем строка?
А если весь скрипт в одну строку будет?

Мне не зачем, просто интересно было, как это реализовать

Hapson 03.04.2014 16:24

dmitry111,
Вопрос не в том "зачем", а КАК.
Как сделать так, чтобы функция при вызове узнавала, в каком файле и на какой строке ее вызвали.

dmitry111 03.04.2014 16:55

Цитата:

Сообщение от Hapson
Как сделать так, чтобы функция при вызове узнавала, в каком файле и на какой строке ее вызвали.

скрипты для уменьшения их веса принято сжимать и минимизировать в один файл. Наверное поэтому определение файла и строки теряет актуальность в js.


Можно вместо строки передавать с ошибкой ее номер и основываться на нем.

kostyanet 03.04.2014 16:55

У кого php головного мозга тот должен понимать что номер строки скрипта и имя файла может быть взято из html в котором любой скрипт чуйствует себя как domа.

Это не считая таких форматов как инлайновые скрипты.

Файл скрипта и номер строки в этом файле в JS это _частный_ случай. Хочет браузер показать - покажет, не хочет - не покажет.

WScript даже номер символа демонстрирует. Ну и что?


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