Re: SAX: 1998-04-18 pre-release (I/O)

David Brownell (David.Brownell@Eng.Sun.COM)
Sun, 19 Apr 1998 07:53:48 -0700


This makes it an easy call -- "throws IOException". APIs should never
declare "throws Exception" except maybe in the earliest stage of coming
up with the exception model. And in this case, "IOException" is how any
code doing I/O will already throw exceptions; no need to for more.

By the way, the names "ByteStream" and "CharacterStream" imply they're
good for writing too. Far preferable to say "InputStream" and "Reader".
I/O in languages other than Java should obey those languages' rules, as
(and when) the SAX models are translated to them.

- Dave

> Making the read methods on ByteStream and CharacterStream throw
> SAXException seems wrong to me. In a Java environment I need to be able
> to throw an IOException. So they should be declared as throwing either
> Exception or IOException. The approach in InputStreamAdapter of just
> passing through the message from IOExceptions is not acceptable. An
> application may need to deal with different classes of IOExceptions
> differently, so it needs to be possible to propagate the IOException up
> to Parser.parse.
>
> James