З огляду на цей фрагмент відстеження стека
Викликано: java.net.SocketException: Програмне забезпечення, пов’язане з перериванням зв'язку: помилка запису сокета
на java.net.SocketOutputStream.socketWrite0 (Native Method)
Я намагався відповісти на наступні питання:
- Який код кидає цей виняток? (JVM? / Tomcat? / Мій код?)
- Що спричиняє викид цього винятку?
Щодо №1:
Джерело JVM Sun не містить цього точного повідомлення, але я вважаю, що текст, викликаний програмним забезпеченням, з'єднання перервано: помилка запису сокета - це від нативної реалізації SocketOutputStream
:
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
int len) throws IOException;
Щодо №2
Я гадаю, що це викликано, коли клієнт припинив з'єднання, перш ніж отримати повну відповідь (наприклад, надіслав запит, але перш ніж отримати повну відповідь, він закрився / припинено / офлайн)
Запитання:
- Чи правильні вище припущення (№1 та №2)?
- Чи можна це відрізнити від ситуації: "не вдалося написати клієнту через помилку мережі на стороні сервера "? чи це відображатиме те саме повідомлення про помилку?
- І найважливіше: чи існує офіційний документ (наприклад, від Sun), що вказує вище?
Мені потрібно мати доказ того, що цей слід стека - це "вина" клієнта сокету, і сервер міг би зробити це, щоб цього уникнути. .
outs.write(audioBytes);
) byte[]
в OutputStream
. Коли звук лежить і під час відтворення, якщо користувач натискає будь-яке інше меню (яке надсилає запит на сервер), я отримав таку ж помилку на консолі. так чи безпечно ігнорувати цей виняток?