Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   try и catch подскажите как правильно сделать (https://javascript.ru/forum/css-html/8507-try-i-catch-podskazhite-kak-pravilno-sdelat.html)

Jekel 30.03.2010 02:20

try и catch подскажите как правильно сделать
 
нужно сделать так, чтобы если map = error ну либо оно ничему не равно тоесть на него нету ответа от xmlResp, то выполнялся код который в первом листинге в catch.

так не работает(
try{ 
map = xmlResp.getElementsByTagName('x'+x+'y'+y).item(0).firstChild.data; 
document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/" + map + ")"; 
}catch{ 
document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/no.gif)"; 
}


и так пробывал:

try{ 
map = xmlResp.getElementsByTagName('x'+x+'y'+y).item(0).firstChild.data; 
if(!map){document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/" + map + ")"; 
}else{ 
document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/no.gif)"; 
} 
}catch(e){}

Gvozd 30.03.2010 02:52

а пробрасывать(throw) исключение кто будет?

x-yuri 30.03.2010 04:22

а try/catch зачем?
var tagNameId = 'x'+x+'y'+y;
var tags = xmlResp.getElementsByTagName(tagNameId);
var imgName =   tags.length   ? tags[0].firstChild.data
                              : 'no.gif';
document.getElementById(tagNameId).style.backgroundImage = "url(img/"+imgName+")";

только непонятно достаточно ли tags.length в качестве условия. И очень настораживает использование id совпадающего с названием тэга

Jekel 30.03.2010 12:07

нужен трай, потому что там ответ иногда пустой, и выдает ошибки...там цикл запросов XHR

Jekel 30.03.2010 12:08

Gvozd,
как его херячить?

Snipe 30.03.2010 12:09

м.б. просто надо написать в первом случае }catch(e){ а не }catch{

Jekel 30.03.2010 12:19

пробывал, все делается как в catch всегда...тоесть всегда document.getElementById('x'+x+'y'+y).style.backgro undImage = "url(img/no.gif")"; хотя try должен работать

Jekel 30.03.2010 12:38

и это не работает(

try{
map = xmlResp.getElementsByTagName('x'+x+'y'+y).item(0).firstChild.data;
if(map){
document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/" + map + ")";
throw "E0";
}else{
throw "E1";
}
}catch(e){
if(e == "E1"){
document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/no.gif")";
}
}

Snipe 30.03.2010 16:46

Попробуйте так:
try{
	map = xmlResp.getElementsByTagName('x'+x+'y'+y).item(0).firstChild.data;
	if(!map){document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/" + map + ")";
	}else{
	document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/no.gif)";
	}
	}catch(e){
document.getElementById('x'+x+'y'+y).style.backgroundImage  = "url(img/no.gif)";
}

x-yuri 31.03.2010 10:33

Цитата:

Сообщение от Jekel
нужен трай, потому что там ответ иногда пустой, и выдает ошибки...там цикл запросов XHR

ну вот тебе код. Научи меня вызывать исключения
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<SCRIPT TYPE="text/javascript">
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', '10.xml', true);
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       var tags = xmlhttp.responseXML.getElementsByTagName('a');
         }
  }
};
xmlhttp.send(null);
alert(1);
</SCRIPT>

</body>
</html>


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