1. JavaScript / Говнокод #19405

    −18

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    try {
        try {
            try {
                this.socket = new WebSocket( this.options.urlSocket ); 
                // WebSocket connection to '...' failed: ... 
                // script interrupted
                // почему сафари кладёт хрен на try...catch?
            } catch (e) { }
        } catch (e) { }
    } catch (e) { }

    Запостил: bot, 05 Февраля 2016

    Комментарии (4) RSS

    • Блять. Забыл про finally...
      Ответить
    • Я тут подумал и решил, что это скорее всего асинхронный питух.
      1. Если this.options.urlSocket плохой, new WebSocket сразу бомбанёт
      2. Если this.options.urlSocket хороший, но что-то пошло не так, бомбанёт асинхронно.
      try {
          this.socket = new WebSocket( this.options.urlSocket );
          this.socket.onerror = function(error) {
            // перехватили
            // Error: WebSocket connection to '...' failed: ... 
          };
      } catch (e) { }
      Ответить
      • Не, onerror не помогает. Там фишка в том, что в сафари без finally, в некоторых случаях, catch не срабатывает. В частности с сокетами и с нарушением origin policy.
        Ответить
        • Как? Почему? Это какой-то баг, который уже лет 15 всё не хотят исправлять?

          > с нарушением origin policy
          У меня нет Safari; в Chrome видел, что при этом в консоль пишется назойливая неотключаемая ошибка, но скрипт хотя бы продолжает выполняться.
          Ответить

    Добавить комментарий