Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2013, 18:51
Интересующийся
Отправить личное сообщение для Little_Cat Посмотреть профиль Найти все сообщения от Little_Cat
 
Регистрация: 11.08.2012
Сообщений: 16

Перехват ошибок
Подскажите пожалуйста. Не могу понять, почему, но номер 1 (первый throw) не вываливается в блок catch() - второй аж бегом.


Подскажите, а то устал искать. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2013, 22:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Код, вставленный скриншотом - да вы извращенец, батенька )
Может потому что выполняется if (false) { if (***) {**} else { trhow .. } } else { throw } ?
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2013, 11:19
Интересующийся
Отправить личное сообщение для Little_Cat Посмотреть профиль Найти все сообщения от Little_Cat
 
Регистрация: 11.08.2012
Сообщений: 16

Да под вечер было уже лень перебивать. Прошу прощения. Там вложений много. Вот обобщенный код модуля.
try { 
                  if (VisualStateController.getSelectedLine() !== undefined) {
                        switch (tileId) {
                              case 'InfoDataTile':
                                    sceneDataService.getLineInfo(VisualStateController.getSelectedLine(), function (json) {
                                          if (json.Result === 'OK') {
												................................................
                                          } else {
                                                throw new Error('sdfsfsdfsfsdfdsdf');
                                          }

                                    });
                                    break;
                              default:
                                    sceneDataService.getPartialView(tileId, function (json) {
                                          if (json.Result === 'OK') {
												................................................

                                          } else {
										  Сюда точно попадаем - генерируется исключение
										  но вместо того, чтобы попасть в catch выше - оно уходит в консоль броузера и отображается там
										  
                                                throw new Error('sdfsfsdfsfsdfdsdf');
                                          }
                                    });
                        }
                  } else {

                    throw new Error('sdfsfsdfsfsdfdsdf');
                  }
} catch(e) {
      ................................................
}


так что он по коду его не обходит. В глобальный Catch ошибка то должна попасть.
Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 28.02.2013, 22:00
Интересующийся
Отправить личное сообщение для Little_Cat Посмотреть профиль Найти все сообщения от Little_Cat
 
Регистрация: 11.08.2012
Сообщений: 16

Разобрался. Спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2013, 13:43
Интересующийся
Отправить личное сообщение для Little_Cat Посмотреть профиль Найти все сообщения от Little_Cat
 
Регистрация: 11.08.2012
Сообщений: 16

Гм. Можно было просто спросить что именно получилось. Вывел в интерфейс функций вместе с Callback еще и ErrorCallback и выбрасываю сообщение об ошибке в место вызова функции модуля. Неотработка по месту вероятно как-то связана с асинхронностью работы функций в модуле. Было

01	try {
02	                  if (VisualStateController.getSelectedLine() !== undefined) {
03	                        switch (tileId) {
04	                              case 'InfoDataTile':
05	                                    sceneDataService.getLineInfo(VisualStateController.getSelectedLine(), function (json) {
06	                                          if (json.Result === 'OK') {
07	                                                ................................................
08	                                          } else {
09	                                                throw new Error('sdfsfsdfsfsdfdsdf');
10	                                          }
11	 
12	                                    });
13	                                    break;
14	                              default:
15	                                    sceneDataService.getPartialView(tileId, function (json) {
16	                                          if (json.Result === 'OK') {
17	                                                ................................................
18	 
19	                                          } else {
20	                                          Сюда точно попадаем - генерируется исключение
21	                                          но вместо того, чтобы попасть в catch выше - оно уходит в консоль броузера и отображается там
22	                                           
23	                                                throw new Error('sdfsfsdfsfsdfdsdf');
24	                                          }
25	                                    });
26	                        }
27	                  } else {
28	 
29	                    throw new Error('sdfsfsdfsfsdfdsdf');
30	                  }
31	} catch(e) {
32	      ................................................
33	}

Стало
01	try {
02	                  if (VisualStateController.getSelectedLine() !== undefined) {
03	                        switch (tileId) {
04	                              case 'InfoDataTile':
05	                                    sceneDataService.getLineInfo(VisualStateController.getSelectedLine(), function (json) {
06	                                          if (json.Result === 'OK') {
07	                                                ................................................
08	                                          } else {
09	                                 ErrorCalback(new Error('sdfsfsdfsfsdfdsdf'));
10	                                          }
11	 
12	                                    });
13	                                    break;
14	                              default:
15	                                    sceneDataService.getPartialView(tileId, function (json) {
16	                                          if (json.Result === 'OK') {
17	                                                ................................................
18	 
19	                                          } else {
20	                                          Сюда точно попадаем - генерируется исключение
21	                                          но вместо того, чтобы попасть в catch выше - оно уходит в консоль броузера и отображается там
22	                                      ErrorCalback(new Error('sdfsfsdfsfsdfdsdf'));
23	                              
24	                                          }
25	                                    });
26	                        }
27	                  } else {
28	 
29	                   ErrorCalback(new Error('sdfsfsdfsfsdfdsdf'));
30	                  }
31	} catch(e) {
32	      ................................................
33	}


ну и в месте вызова функции модуля
MyMoDule.MyFunc(Param1, functionCallback(data){}, functionErrorCallback(error){ alert(error.message);});
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2013, 14:44
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Да, у новичков обычно проблемы с пониманием асинхронности. Отсюда и ноги растут.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите сервис отлова ошибок Tek Internet Explorer 1 07.09.2012 17:33
Обработка ошибок при асинхронном выполнении в JavaScript Mirror13 Общие вопросы Javascript 0 29.04.2012 17:19
В Opera 11.10 консоль ошибок не работает? Маэстро Opera, Safari и др. 1 21.04.2011 10:58
В Firefox3 в консоли ошибок вылазит ошибка uonax Ваши сайты и скрипты 6 15.06.2010 19:45
Нужен толковый ответ насчет ошибок в XML VeliaR Ваши сайты и скрипты 2 27.05.2009 10:03