Moje gniazdo aktualnie wyrzuca net :: ERR_CONNECTION_REFUSED, ponieważ serwer nie działa, co chcę w tej chwili zrobić.JavaScript nie przechwytuje błędu w instancji WebSocket
Problem polega na tym, że następujący fragment kodu nie przechwytuje błędu. W konsoli widzę wyjątek na linii 2 (z net :: ERR_CONNECTION_REFUSED), co moim zdaniem nie powinno się zdarzyć, ponieważ jest w instrukcji try.
1 try {
2 ws = new WebSocket('ws://'+ host + ':' + port + '/');
3 }
4 catch (err) {
5 console.log('This never prints');
6 }
7 ws.onerror = function (error) {
8 console.log(error);
9 };
Moje pytanie brzmi: dlaczego nie zostanie złapany?
Ostatecznie chcę, aby komunikat o błędzie był wyświetlany w innym miejscu, ale nie mogę go złapać, a wiersz 8 wypisuje obiekt "event", który nie wymienia net :: ERR_CONNECTION_REFUSED, więc nie jestem pewien jak uzyskać komunikat o błędzie.
To bardzo pomocne informacje, chociaż nie rozumiem, dlaczego wyjątek nie został "złapany". To wydaje się łamać podstawowe ramy tego języka. Zakładam, że sposobem na zrobienie tego, co chcę, jest obsługa onclose i spojrzenie na kod CloseEvent. – andyhasit
@AndyHasIt dodałem akapit otwierający o tym; Mam nadzieję, że jest wystarczająco jasne. Zasadniczo nie możemy "złapać" błędu, ponieważ synchronicznie kończymy blok "try", zanim próba asynchronicznego połączenia napotka błąd. – apsillers
Ma sens, dzięki za pomoc. – andyhasit