getProtocolByName
Finn Wilcox
finnw@iname.com
Sun, 3 Mar 2002 09:30:31 +0000 (GMT)
On Sun, 3 Mar 2002 dominic.j.steinitz@britishairways.com wrote:
> Here's my test program. TCP is a valid protocol. But I get the following
> when I run it. I'm running under W98 by the way. I have two questions:
>
> 1) Why do I get an error?
You want:
> module Main(main) where
>
> import BSD
import Socket (withSocketsDo)
>
> main =
withSocketsDo $
> do protocolEntry <- getProtocolByName "TCP"
...
>
See http://www.haskell.org/ghc/docs/latest/set/socket.html#AEN14601
> 2) Even if this is a valid error why doesn't the function tell me so that I
> can handle it rather than terminating?
>
It is a valid error. It is raising an exception which you can catch if you
want. e.g.
import IO (catch, isDoesNotExistError)
...
catch (do protocolEntry <- getProtocolByName "TCP"
putStrLn ("Protocol name:" ++ (protoName protocolEntry)))
(\e -> if isDoesNotExistError e then
putStrLn "Error" else
ioError e)
Finn.