Показать сообщение отдельно
  #15 (permalink)  
Старый 03.04.2014, 14:31
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

dmitry111,
я уже переопределил window.onerror и написал функционал отправки/логирования. Теперь нужно написать функцию-аналог trigger_error из php.
Вот что есть
(function(){window.onerror = ErrorHandler;

/*** SETTING ***/
var url = window.location.protocol +"//"+ window.location.hostname +"/phpHandlerJSError.php";
var debug = true;
var serverLog = true;

function ErrorHandler(message, file, line){
	if(!!serverLog){sendError(message, file, line);}
	return !!debug ? false : true;
}

function sendError(message, file, line){
	var xhr = getXHR();
	var param = "message="+ encodeURIComponent(message) +"&";
		param += "file="+ encodeURIComponent(file) +"&";
		param += "line="+ encodeURIComponent(line);
	xhr.open("POST", url, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.setRequestHeader("HTTP_X_FORWARDED_FOR", "XmlHttpRequest");
	/* tmp */
   xhr.onreadystatechange = function(){
		if(xhr.readyState == 4 && xhr.status == 200){
			alert(xhr.responseText);
		}
	};
	xhr.send(param);
}

function getXHR(){
	try{return new XMLHttpRequest();}catch(e){}
	try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");}catch(er){}
	throw new Error("This browser does not support XMLHttpRequest");
}

}());

При ошибке сработает ErrorHandler. В дополнение к этому нужна функция, которая будет сама узнавать в каком файле и на какой строке ее вызвали. То есть, в каком-то участке кода я ожидаю, что что-то может пойти не так. Я не хочу оборачивать этот участок кода в try...catch, ради того чтобы в try по условию бросить исключение.
Я хочу просто вызвать некий triggerError('ошибка') и продолжить выполнение. triggerError должен определить файл и строку, где его вызвали и вместе с ошибкой передаст это все в ErrorHandler, который и отправит все это на сервер

Последний раз редактировалось Hapson, 03.04.2014 в 14:33.
Ответить с цитированием