Re: Good practice or not to close the file before System.exit(1)?
Patricia Shanahan wrote:
rossum wrote:
Good catch, my mistake. System.exit() bypasses any finally blocks.
Ouch.
To the OP: don't use System.exit(), throw an exception instead.
If the program should terminate with a non-zero status code, the OP has
to call System.exit(). Exceptions can only reduce the number of
different places where it is called, and put the calls at an appropriate
level in the call hierarchy.
Melding all that good advice and cautionary warning into just one out of many
possible valid approaches:
BufferedReader reader = new BufferedReader( ... );
// create assertable reader != null here
Outcome outcome; // custom enum - assume necessary properties
try
{
...
outcome = Outcome.SUCCESS;
}
catch ( IOException exc )
{
outcome = Outcome.SCREWUP;
logger.error( outcome.toString(), exc );
}
finally
{
try
{
reader.close();
}
catch ( IOException exc )
{
logger.error( "Screwup in close()", exc );
}
}
switch ( outcome )
{
case SCREWUP:
System.exit( 1 );
break;
case SUCCESS:
break;
}
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg