Try block is followed by finally block as an alternative . But usually it is followed by a catch block. Both are equivalent.
Genaerally every try block maintain the one finally block or atleast one catch block or both. It mean try { try{ try{ } or } or } finally { catch(....) { catch(...){ } } } catch(.....) { : } finally{ : } Hear whenever we declar the try block without catch or finally bocks it show the compile time error like ' try without catch or finally' and also it is not possible to declare the any statements in between the try ,catch and finally blocks. ex: try{ } System.out.println("statement"); finally { } The above example show the compile time error 'try without catch or finally'. " Hear the finally block must be execute after excuting the try or catch block. Hence the finally block is used to release the resources like closing the streams and closing the jdbc connections." Hence in exception handling we use one finally block for one try block to release the resources.
The Finally block in java is used along with the try-catch statements. The usual structure is try { ..... } catch(Exception e){ .... } finally { ..... } In the finally block we usually have code that is used to perform clean up activities corresponding to the code in the try block. When an exception occurs in the try block control comes to the catch block and the rest of the code in the try block would not execute. In such cases we may need to have some code that cleans up the objects that we created/used in the try block. No matter what happens, the code inside the finally block would definitely execute. The best use of finally block is when we are connecting to the database. In the try block we would have the statements that instantiate the connection, prepared statement, result set etc. If the query fails then all these objects would be left open and the code would continue. So in the finally block we usually nullify these statements so that even in case of an error the unused objects are cleared. Example: Connection con; PreparedStatment PS; ResultSet rs; try{ con = ConnectionManager.getConnection(); PS = con.prepareStatement(query); rs = PS.executyQuery(); ...... } catch (Exception e){ e.printStackTrace(); } finally { con.close(); PS.close(); } In case of an error the connection & prepared statement objects would remain open if we do not have the finally block. Tip: Whatever code we have inside the finally block would be run definitely if the try block is invoked. We can even use the finally block to check if the try block was reached and executed. If the try executes then we can rest assured that the finally would also get executed.
You might consider a construct like this: try { some code } catch (exception) { var err=1; } if (!err) { your finally block }
A try block must have a corresponding catch or atleast a finally block. The purpose of a try block is to identify areas in the code where exceptions may be generated and handle them. So, if you dont have a catch block, the whole purpose of using the try block is defeated
Although try and catch provide a great way to trap and handle exceptions, we are left with the problem of how to clean up if an exception occurs. Because execution transfers out of the try block as soon as an exception is thrown, we can't put our cleanup code at the bottom of the try block and expect it to be executed if an exception occurs. Exception handlers are a poor place to clean up after the code in the try block because each handler then requires its own copy of the cleanup code. If, for example, you opened a database connection somewhere in the guarded region, each exception handler would have to release the connection. That would make it too easy to forget to do cleanup, and also lead to a lot of redundant code. If you forget to close the connection in cases where an exception occurs, you will be left with orphan connections which can eventually crash your database. To address this problem, Java offers the finally block. A finally block encloses code that is always executed at some point after the try block, whether an exception was thrown or not. Even if there is a return statement in the try block, the finally block executes right after the return statement is encountered, and before the return executes! This is the right place to close your files, release your db connections, and perform any other cleanup your code requires. If the try block executes with no exceptions, the finally block is executed immediately after the try block completes. If there was an exception thrown, the finally block executes immediately after the proper catch block completes. Let's look at another pseudocode example: 1: try { 2: // This is the first line of the "guarded region". 3: } 4: catch(DatabaseDownException) { 5: // Put code here that handles this exception 6: } 7: catch(SomeOtherException) { 8: // Put code here that handles this exception 9: } 10: finally { 11: // Put code here to release any resource we 12: // allocated in the try clause. 13: } 14: 15: // More code here As before, execution starts at the first line of the try block, line 2. If there are no exceptions thrown in the try block, execution transfers to line 11, the first line of the finally block. On the other hand, if a SomeOtherException is thrown while the code in the try block is executing, execution transfers to the first line of that exception handler, line 8 in the catch clause. After all the code in the catch clause is executed, the program moves to line 11, the first line of the finally clause. To summarize - THE FINALLY BLOCK WILL EXECUTE ALWAYS. There is actually a catch here about the finally block executing always, but I will leave you to ponder over it for sometime. We will look at it a little later.
If you have an exception you should fix mistake in your try block. If you want to run some code even after exception was thrown you can use full form of try block:try{...}catch (...){...}finally{...}Where the statement finally is what you need. Make sure that the code you run within this statement is not able to trow exceptions.
You can only explicitly escape from a finally block by returning out of it. A break statement is not allowed there.
Code in the finally block is executed even if no exception is thrown. That is to say, it is a way to make sure that a second of code always executes regardless of the path taken to reach the end of the try-catch block. The code in the catch block is executed only if there is an exception caught; it is intended to handle the situation that threw the exception. As a trivial example, you might allocate memory, perform some transaction, save the data to a file, then close the file and deallocate memory. It would make sense to put the memory allocation, file allocation, and data processing inside the try block, so you can catch any exceptions, then handle the exceptions in the catch block, and finally deallocate the memory and close the file, if open, using a finally block (to ensure that all resources were released, regardless of the exception handling).
use of finally block is optional in java.if u want to clean up ur code (means u want to close any connection)after exception handling then go for finally block.if not then also your code will run fine.so finally block is optional in java.
A try block can have multiple catch blocks, each handling a different type of exception. Be careful about the order of laying the exceptions. Using Exception at the top will catch everything that is derived from it, thereby missing the other specfic exception catches. And there can also be only one finally block.
Theoretically, the finally block will execute no matter what. But practically, the following scenarios can prevent the execution of the finally block. * The death of thread * Use of system.exit() * Turning off the power to CPU * An exception arising in the finally block itself
A Catch block is part of the exception handling mechanism in Java. It is used along with the try block. Ex: try { ... } catch (Exception e) { ... } The catch block is used to catch & handle the exception that gets thrown in the try block.