
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 02.03.2020, 14:51 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. Если в этот код передать заведомо недопустимый адрес (например " http://0.0.0.0"), то ошибка не перехватывается, а вместо этого исключение ERR_ADDRESS_INVALID выбрасывает браузер. Предполагаю, что из-за асинхронного режима, т.к. читал, что try/catch работает только в синхронном коде. А как перехватывать такие ошибки? Обработчик onerror у XMLHttpRequest задан, он срабатывает, но из него я не могу определить причину ошибки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 07:33 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Alibek B. А как перехватывать такие ошибки? А стандартный вариант обработки не срабатывает? https://learn.javascript.ru/ajax-xmlhttprequest ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 08:58 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Стандартный это как? В синхронном режиме? В синхронном режиме try/catch работает нормально. В асинхронном режиме в момент выполнения send ошибок не происходит, однако спустя доли секунды браузер показывает в консоли исключение (после того как отработает onerror). То есть ошибку я поймать могу, но при этом исключение не перехватывается, а попадает уровнем выше (в браузер). ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 09:11 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Alibek B. Стандартный это как? Там же и пример есть... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 10:21 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Alibek B. В асинхронном режиме в момент выполнения send ошибок не происходит, однако спустя доли секунды браузер показывает в консоли исключение (после того как отработает onerror). Есть пример и для асинхронной обработке... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 10:52 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Мне казалось, что я написал, в чем сложности. В асинхронном режиме у меня обработчики onerror (или onreadystatechange) и так работают. Но при этом в браузере (в консоли разработчика) все равно выбрасывается исключение, оно не перехватывается catch. Диаграмма получается следующая: 1) .open в асинхронном режиме 2) .send внутри try выполняется успешно, исключение не происходит 3) .onerror, в котором я получаю событие с типом error 4) в консоли браузера происходит исключение на строке с .send, и оно НЕ обрабатывается в catch Проблемы тут две. Во-первых, в onerror я не получаю информации об ошибке. Например для заведомо неверного URL выбрасывается исключение ERR_ADDRESS_INVALID, однако в обработчике этой информации нигде нет, об ошибке можно судить только по status=0. В синхронном режиме эта ошибка передается в catch (в переменной $err), но в onerror она не передается. Во-вторых, исключение не перехватывается, а попадает в браузер (несмотря на catch). Как его погасить? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 12:22 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Alibek B. , кроме обработчика onreadystatechange в асинхронном вызове больше ничего нет... Как вариант, использовать setTimeout() и там запускать синхронный запрос с твоей обработкой... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 12:46 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Я бы предпочел не использовать синхронные запросы. Хром (и не только) ругается, что они depricated. И возможно, что через какое-то время они вообще перестанут работать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 12:48 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Alibek B. Я бы предпочел не использовать синхронные запросы. Значит выбор у тебя не велик... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 17:53 
 | 
|||
|---|---|---|---|
  
  | 
|||
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  А может в Promise все это загнать. Он вроде должен все ошибки перехватывать. Типа этого Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 18:19 
 | 
|||
|---|---|---|---|
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Я сварщик ненастоящий. Концепцию promise пока понимаю не очень. Но в этом случае разве не лучше использовать fetch? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 03.03.2020, 19:06 
 | 
|||
|---|---|---|---|
  
  | 
|||
Перехват ошибки в асинхронном XMLHttpRequest  | 
|||
| 
 #18+ 
  
    
  Alibek B., Я его и использую обычно. Но он не работает в ИЕ 11-. Если они не нужны, то конечно лучше. Он возвращает Promise и ошибки нормально ловятся через .catch (метод Promise, а не тот, который у try) ЗЫ А Promise у ИЕ 11- тоже нет. Но помнится, был полифил какой то. Я его использовал когда то, как раз с XMLHttpRequest, но на все возможные ошибки не тестировал. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=22&tablet=1&tid=1443521]:  | 
    0ms | 
get settings:  | 
    11ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    72ms | 
get topic data:  | 
    13ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    49ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 12ms | 
| total: | 182ms | 

    | 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.»
    
    
    ... бла, бла, бла ...