Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   CATCH не ловит exceptions в jQuery (https://javascript.ru/forum/jquery/51893-catch-ne-lovit-exceptions-v-jquery.html)

scruwi 24.11.2014 12:51

CATCH не ловит exceptions в jQuery
 
Добрый день. Ранее, в голом JS пользовался try..throw..catch и в хвост, и в гриву. Начал разбираться с jQuery и не могу поймать исключение из функции:

jQuery(document).ready(function($, undefined) {
     try { 
          function_misc();
     }
     catch(err) { 
          ... 
     }
     function function_misc(){
          throw "error";
     }
});


понимаю, что throw вне зоны видимости catch, а как сделать правильно?

Sweet 24.11.2014 13:08

Скобки фигурный убери в третьей строчке.

devote 24.11.2014 13:08

Цитата:

Сообщение от scruwi
function_misc(){}

зачем тут {} ? Вы же вызвать метод хотите, а такое впечатление что строите функцию.

scruwi 24.11.2014 13:17

с фигурными скобками это у меня опечатка. конечно их там нет.
а по сути вопроса предложения есть? с ночи бьюсь, не могу понять.
ловить исключения отдельно в каждой функции нет никакого желания.

devote 24.11.2014 13:33

а что не работает то?

у меня все работает:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
jQuery(document).ready(function($, undefined) {

  try {
    function_misc();
  } catch(err) {
    alert('Поймал исключение ' + err);
  }

  function function_misc(){
    throw "error";
  }

});
</script>

scruwi 24.11.2014 14:02

тогда прощенья просим, сам я свой упрощенный пример не додумался проверить.
значит я где-то напортачил, буду искать.

UPD: проблема, как всегда, в невнимательности. теперь я вижу, в чем проблема. было вот так:

jQuery(document).ready(function($, undefined) {
     try {
          $form.change(function(){ 
               function_misc();
          }
     }
     catch(err) {
          ...
     }
     function function_misc(){
          throw "error";
     }
});


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