Az én tippem: lefut a 157-én az implReleaseFD
, azután elégedetten kilépünk a függvénnyel az illető Exception-nal, de anélkül, hogy a saját státusz-változóinkban követtük volna, hogy hát bizony itten valami baj volt, a legjobb lenne lezárni ezt a kapcsolatot. (Gyk: nagyon is véges azoknak a hibáknak a száma, amik nem fatális hibát jelentenek, mondjuk EINTR
, EAGAIN
, EWOULDBLOCK
).
Szóval ha a hívó is úgy áll hozzá, hogy a hiba arra való, hogy ne kezeljük korrektül, akkor előfordulhat például az, hogy újra meghívják ugyanezt a metódust, csak mostanra már a file descriptor is érvénytelen lesz.
- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
- 584 megtekintés
Hozzászólások
jdk7, ez is de rég volt...
Régóta vágyok én, az androidok mezonkincsére már!
- A hozzászóláshoz be kell jelentkezni
abevjava? Vagy az mar a 8-as?
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
- A hozzászóláshoz be kell jelentkezni
szvsz, a hivo megkapja a IOException-t, azt le kell neki valahogy kezelnie. ha ezek utan ujra meghivja a read()-ot, akkor magara vessen.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
+1, en sem vagyok biztos benne, hogy ertem a konkluziot. Az exceptiont ott kell elkapni, ahol tudsz vele kezdeni valamit - a connection reset itt pl. olyan, de minden mast tovabbenged. Ha te, mint a hivo egy exception utan raprobalsz ujra ugyanugy, akkor igen, annak lehet mellekhatasa.
Ha ez ilyen elvi kerdes, hogy lehet-e rosszul hasznalni az exceptionoket, akkor persze, lehet.
- A hozzászóláshoz be kell jelentkezni
szvsz, a hivo megkapja a IOException-t, azt le kell neki valahogy kezelnie.
Épp erről szól a bejegyzés is. A hívó, a SocketInputStream, megkapja az IOException-t és nem kezeli le teljesen, hanem félig meddig. Ha az őt hívó is hasonló alaposságú, akkor lehet gond. A SocketInputStream, bizonyos exception-ök esetén, tudná az ő szemszögéből korrektül kezelni a problémát, de nem teszi. A legnagyobb gond ilyenkor, hogy akár nyitva is maradhat a kapcsolat, senki sincs kötelezve, hogy lezárja. Egy idő után meg kifogynak a file descriptorok.
- A hozzászóláshoz be kell jelentkezni
> de anélkül, hogy a saját státusz-változóinkban követtük volna, hogy hát bizony itten valami baj volt, a legjobb lenne lezárni ezt a kapcsolatot
Honnan veszed, hogy ez nem történik meg? Ott nem, de máshol? A read avval indul, hogy "if (impl.isConnectionReset())". Tehát konkrétan mi a hiba?
Mondanám, hogy jelentsd nekik, mert van bugtrackerük, de ez JDK7. Simán lehet, hogy ismerte hiba, de ebben a verzióban már nem fogják javítani.
- A hozzászóláshoz be kell jelentkezni