Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7522847
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T02:37:53+00:00 2026-05-30T02:37:53+00:00

I have a variable that is not supposed to change its value after it’s

  • 0

I have a variable that is not supposed to change its value after it’s been initialized, so I want to define it as a final variable.

the problem is that the variable has to be initialized inside a try block, so I get the following troubles:

I have the following code:

Connection conn = null;
try {
    conn = getConn(prefix);
    [...do some stuff with conn...]
} catch (Exception e) {
    throw new DbHelperException("error opening connection", e);
} finally {
    closeConnection(conn);
}

If I declare the variabale as final, without initializing it to null, I get a ‘The local variable conn may not have been initialized’ on the finally block. On the other hand, if I declare it final and initialize it to null, I get the error ‘The final local variable conn cannot be assigned’ in the try block.

EDIT: after lxx answer, I came with this version

try {
    final Connection conn = conn = getConn(prefix);
    try {
        return selectAll(conn, sql, params);
    } catch (Exception e) {
        throw new DbHelperException("error executing query", e);
    } finally {
        closeConnection(conn);  
    }
} catch (Exception e) {
    throw new DbHelperException("error opening connection", e);
}

So this should be the way to do it?

—

Lesson learned:

I think that the correct answer to the question is the one that lxx gave, but in this case I guess that the cons of declaring the variable final outweights it’s benefits…

—

EDIT: found two questions on stack overflow about when to use final

When should one use final for method parameters and local variables?

Using "final" modifier whenever applicable in java

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T02:37:55+00:00Added an answer on May 30, 2026 at 2:37 am

    You could handle the Exceptions more accurately. If you get an Exception opening the connection, you don’t have to close it in the finally block I guess. If you get an exception after that, in the try block, and handle the exception in a new nested try-catch block you don’t need to define the variable outside. Something like:

        try {
            final Connection conn = getConn(prefix);
            try {
                //code using conn
            } catch (Exception e) {
    
            } finally {
                closeConnection(conn);
            }
        } catch (DbHelperException e) {
            throw new DbHelperException("error opening connection", e);
        }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a variable in my xsl that may or may not be declared.
I have a variable that im define with another variable and some text. $title
I have a perl variable $results that gets returned from a service. The value
I have certain PHP class methods that access external variables. These variables are not
I have a variable that is built in loop. Something like: $str = ;
I have a variable that contains a 4 byte, network-order IPv4 address (this was
I have a variable that can either contain a list of strings or a
I have a variable that contains : Sometimes array of strings and sometimes array
I have a variable that's being changed all the time in the course of
I have a variable that I'm using to build a JavaScript function call, and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.