<
html
>
<
head
>
<
title
>PTypes: streams: error handling</
title
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=iso-8859-1"
>
<
link
rel
=
"stylesheet"
href
=
"styles.css"
>
</
head
>
<
body
bgcolor
=
"#FFFFFF"
leftmargin
=
"40"
marginwidth
=
"40"
>
<
p
><
a
href
=
"../index.html"
><
img
src
=
"title-21.png"
width
=
"253"
height
=
"39"
alt
=
"C++ Portable Types Library (PTypes) Version 2.1"
border
=
"0"
></
a
>
<
hr
size
=
"1"
noshade>
<
p
class
=
"hpath"
><
a
href
=
"index.html"
>Top</
a
>: <
a
href
=
"streams.html"
>Streams</
a
>:
Error handling</
p
>
<
p
>When a recoverable error occurs during input/output operations, an exception
of type <
span
class
=
"lang"
>(estream*)</
span
> is thrown. The exception object
contains an error message which can be shown to the user. The message is accessible
through <
span
class
=
"def"
>estream::get_message()</
span
>. </
p
>
<
p
>The example below shows how to catch an exception and recover normal execution
of the program:</
p
>
<
blockquote
>
<
pre
>#include <
pstreams.h
>
USING_PTYPES
infile f("somefile.txt");
try
{
f.open();
while(!f.get_eof())
<
span
class
=
"comment"
> // read the file...</
span
>
}
catch (estream* e)
{
perr.putline(e->get_message());
delete e;
}
</
pre
>
</
blockquote
>
<
p
>The <
span
class
=
"lang"
>estream</
span
> class provides a system error code in
UNIX errno semantics through <
span
class
=
"def"
>estream::get_code()</
span
>. On
Windows most error codes are translated into corresponding UNIX errno codes. Less
frequently occurring errors are translated to a generic errno code EIO. When an
<
span
class
=
"lang"
>estream</
span
> object returns EIO, the actual message string
is constructed based on the status code of the stream. For example, if the status
code was IO_OPENING, the error code was EIO, the message would be "Couldn't
open <
i
>[filename]</
i
>". For explanations on what each errno code means,
see comments in <
span
class
=
"lang"
>src/piobase.cxx</
span
> source file.</
p
>
<
p
><
span
class
=
"lang"
>Estream</
span
> also provides a reference to the stream object
that raised the error condition through <
span
class
=
"lang"
>estream::get_errstm()</
span
>.</
p
>
<
p
class
=
"seealso"
>See also: <
a
href
=
"streams.iobase.html"
>iobase</
a
>, <
a
href
=
"streams.examples.html"
>Examples</
a
></
p
>
<
hr
size
=
"1"
>
<
a
href
=
"../index.html"
class
=
"ns"
>PTypes home</
a
>
</
body
>
</
html
>