2010-09-20 18 views

Odpowiedz

49

Rura jest strumieniem danych, zwykle danymi odczytanymi z pliku lub z gniazda sieciowego. Zerwana rura występuje, gdy ta rura jest nagle zamknięta z drugiego końca. Dla flie może to być, jeśli plik jest zamontowany na dysku lub zdalnej sieci, która została odłączona. W przypadku gniazda sieciowego może to oznaczać, że sieć zostanie odłączona lub proces na drugim końcu zakończy się.

W języku Java nie ma konkretnie określonego BrokenPipeException. Ten typ błędu zostanie znaleziony zawinięty w inny wyjątek, taki jak SocketException lub IOException.

+0

Nicea wyjaśnienia, tak, to jest zapakowane w IOException, ale z tym jasnym przesłaniem, jak „Broken potoku”, w dzienniku otrzymamy coś takiego: Spowodowany przez: java.io .IOException: Uszkodzona rura – Forhad

4

Rury to w zasadzie kanał komunikacji między dwoma procesami. Tak więc jeden proces zapisuje się do rury, podczas gdy drugi odczytuje z niego. Zerwanie wyjątku potoku zazwyczaj oznacza, że ​​jeden proces próbuje odczytać lub zapisać dane z potoku, gdzie proces na drugim końcu rury zginął/został zabity.

0

Myślę, że korzystasz z Java.net?

Jeśli zamkniesz połączenie, musisz otworzyć nowe gniazdo , aby móc wysłać więcej danych.

lub Twoje połączenie jest odrzucony

+0

Gdyby zamknął własne połączenie, miałby "zamknięte gniazdo". Gdyby jego próba połączenia się nie powiodła, nie otrzymałby nawet "Gniazda". W żadnym wypadku nie miałby "złamanej rury". W pytaniu nie ma dowodów na to, czy używa on 'java.net' – EJP

Powiązane problemy