Re: variable scope question
Mark Space wrote:
Sure, just provide a minimal or "trivial" initialization for the
variables before the try block. Null works well:
public static void main(String[]args)
{
PrintWriter fout = null;
String inFileName = null;
String outFileName = null;
try{
int start;
int stop;
This will still throw a NullPointerException if you try to use the
variables which haven't been initialized in the try block (ie, their
values are still null). Best to check in the catch block for the
variables still being null before you use them. Or after the try-catch
block too, if you don't exit in the catch block.
To expand on this point: consider the catch block that says:
catch (IllegalArgumentException iae)
{
fout.println("***");
System.err.println( iae.getMessage() );
}
Notice that the exception could have been thrown before 'fout' was
initialized, or set to a non-null value if you follow Mark Space's
advice. This is why you got the error with the original code, or
could get the NPE as Mark Space pointed out with his code.
Also relevant is Ian Shef's comment about the distinction between
definition, which establishes scope, and initialization, which
establishes a value.
As Ian Shef also pointed out, be more precise in your exception
handling.
--
Lew