How to keep a local variable in scope across a try and catch block?

The following code won't work, because conn goes out of scope before you enter the catch block.

       try

        {

            Connection conn = new Connection();

            conn.Open();

        }

        catch

        {

            if (conn != null) conn.Close();

        }

 

The fix is simple - just declare conn before entering the try block

 

Connection conn = null; // Note the assignment to null to avoid error CS0165 - Use of possibly unassigned local variable 'conn'.

try

{

conn = new Connection();

conn.Open();

}

catch

{

if (conn != null) conn.Close();

}

Of course, for this particular example, you could wrap the Connection class in one that implements IDisposable (if it does not already), so that you could then use a using statement instead of extending the scope of the local.

[author: SantoshZ]