Hi, With this code, the ConnectionTimedOut exception is never handled: | socket data | socket := Socket newUDP. socket setPort: 51284. socket waitForDataFor: 5. data := ByteArray new: 100. [[socket receiveUDPDataInto: data]    on: Error    do: ['Catched error, closing socket' crLog. socket closeAndDestroy]]    ensure: [ 'Closing socket' crLog. socket closeAndDestroy] Any reason it does not work? In Pharo I see several examples using ifCurtailed. Hilaire -- Dr. Geo http://drgeo.eu
On 24 May 2018, at 19:28, Hilaire <hilaire@drgeo.eu> wrote:
Hi,
With this code, the ConnectionTimedOut exception is never handled:
| socket data | socket := Socket newUDP. socket setPort: 51284. socket waitForDataFor: 5. data := ByteArray new: 100. [[socket receiveUDPDataInto: data] on: Error do: ['Catched error, closing socket' crLog. socket closeAndDestroy]] ensure: [ 'Closing socket' crLog. socket closeAndDestroy]
Any reason it does not work?
In Pharo I see several examples using ifCurtailed.
Hilaire
-- Dr. Geo http://drgeo.eu
#receiveUDPDataInto: returns immediately, possibly with zero bytes read. It is #waitForDataFor: that signals the ConnectionTimedOut. Move that expression into the inner block. Sven
participants (2)
-
Hilaire -
Sven Van Caekenberghe