SlideShare a Scribd company logo
Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   1	
  
	
  
Exception	
  Handling	
  
Explain	
  about	
  Exception	
  Handling	
  with	
  an	
  example.	
  
Exception Handling helps us to recover from an unexpected situations – File not found or network
connection is down. The important part in exception handling is the try – catch block. Look at the example
below.
	
  	
  	
  	
  public	
  static	
  void	
  main(String[]	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  method1();	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Line	
  after	
  Exception	
  -­‐	
  Main");	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  private	
  static	
  void	
  method1()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  method2();	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Line	
  after	
  Exception	
  -­‐	
  Method	
  1");	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  private	
  static	
  void	
  method2()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  str	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  str.toString();	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Line	
  after	
  Exception	
  -­‐	
  Method	
  2");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (Exception	
  e)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  NOT	
  PRINTING	
  EXCEPTION	
  TRACE-­‐	
  BAD	
  PRACTICE	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Exception	
  Handled	
  -­‐	
  Method	
  2");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
Program	
  Output	
  
Exception Handled - Method 2
Line after Exception - Method 1
Line after Exception - Main
When exception is handled in a method, the calling methods will not need worry about that exception.
Since Exception Handling is added in the method method2, the exception did not propogate to method1
i.e. method1 does not know about the exception in method2.
Few important things to remember from this example.
• If exception is handled, it does not propogate further.
• In a try block, the lines after the line throwing the exception are not executed.
What	
  is	
  the	
  use	
  of	
  finally	
  block	
  in	
  Exception	
  Handling?	
  
When an exception happens, the code after the line throwing exception is not executed. If code for things
like closing a connection is present in these lines of code, it is not executed. This leads to connection and
other resource leaks.
Code written in finally block is executed even when there is an exception.
2	
   Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   	
  
	
  
Consider the example below. This is code without a finally block . We have Connection class with open
and close methods. An exception happens in the main method. The connection is not closed because
there is no finally block.
	
  
class	
  Connection	
  {	
  
	
  	
  	
  	
  void	
  open()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Connection	
  Opened");	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  void	
  close()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Connection	
  Closed");	
  
	
  	
  	
  	
  }	
  
}	
  
	
  
public	
  class	
  ExceptionHandlingExample1	
  {	
  
	
  
	
  	
  	
  	
  public	
  static	
  void	
  main(String[]	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Connection	
  connection	
  =	
  new	
  Connection();	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  connection.open();	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  LOGIC	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  str	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  str.toString();	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  connection.close();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (Exception	
  e)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  NOT	
  PRINTING	
  EXCEPTION	
  TRACE-­‐	
  BAD	
  PRACTICE	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Exception	
  Handled	
  -­‐	
  Main");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
}	
  
Output
Connection Opened
Exception Handled - Main
Connection that is opened is not closed. This results in a dangling (un-closed) connection.
Finally block is used when code needs to be executed irrespective of whether an exception is thrown. Let
us now move connection.close(); into a finally block. Also connection declaration is moved out of the try
block to make it visible in the finally block.
	
  	
  	
  	
  public	
  static	
  void	
  main(String[]	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  Connection	
  connection	
  =	
  new	
  Connection();	
  
	
  	
  	
  	
  	
  	
  	
  	
  connection.open();	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  LOGIC	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  str	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  str.toString();	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (Exception	
  e)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  NOT	
  PRINTING	
  EXCEPTION	
  TRACE	
  -­‐	
  BAD	
  PRACTICE	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Exception	
  Handled	
  -­‐	
  Main");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  finally	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  connection.close();	
  
Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   3	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
Output
Connection Opened
Exception Handled - Main
Connection Closed
Connection is closed even when exception is thrown. This is because connection.close() is called in the
finally block.
Finally block is always executed (even when an exception is thrown). So, if we want some code to be
always executed we can move it to finally block.
	
  
Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
  
At	
  http://www.JavaInterview.in,	
  we	
  want	
  you	
  to	
  clear	
  java	
  interview	
  with	
  ease.	
  So,	
  in	
  addition	
  to	
  
focussing	
  on	
  Core	
  and	
  Advanced	
  Java	
  we	
  also	
  focus	
  on	
  topics	
  like	
  Code	
  Reviews,	
  Performance,	
  	
  Design	
  
Patterns,	
  Spring	
  and	
  Struts.	
  
We	
  have	
  created	
  more	
  than	
  20	
  videos	
  to	
  help	
  you	
  understand	
  these	
  topics	
  and	
  become	
  an	
  expert	
  at	
  
them.	
  Visit	
  our	
  website	
  http://www.JavaInterview.in	
  for	
  complete	
  list	
  of	
  videos.	
  	
  Other	
  than	
  the	
  videos,	
  
we	
  answer	
  the	
  top	
  200	
  frequently	
  asked	
  interview	
  questions	
  on	
  our	
  website.	
  
With	
  more	
  900K	
  video	
  views	
  (Apr	
  2015),	
  we	
  are	
  the	
  most	
  popular	
  channel	
  on	
  Java	
  Interview	
  Questions	
  
on	
  YouTube.	
  
Register	
  here	
  for	
  more	
  updates	
  :	
  https://feedburner.google.com/fb/a/mailverify?uri=RithusTutorials	
  
Java	
  Interview	
  :	
  A	
  Freshers	
  Guide	
  -­‐	
  Part	
  1:	
  https://www.youtube.com/watch?v=njZ48YVkei0	
  
Java	
  Interview	
  :	
  A	
  Freshers	
  Guide	
  -­‐	
  Part	
  2:	
  https://www.youtube.com/watch?v=xyXuo0y-xoU	
  
	
  
In	
  what	
  kind	
  of	
  scenarios,	
  a	
  finally	
  block	
  is	
  not	
  executed?	
  
Code in finally is NOT executed only in two situations.
1. If exception is thrown in finally.
2. If JVM Crashes in between (for example, System.exit()).
Is	
  a	
  finally	
  block	
  executed	
  even	
  when	
  there	
  is	
  a	
  return	
  statement	
  in	
  the	
  try	
  
block?	
  
private	
  static	
  void	
  method2()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  Connection	
  connection	
  =	
  new	
  Connection();	
  
	
  	
  	
  	
  	
  	
  	
  	
  connection.open();	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  LOGIC	
  	
  	
  	
  	
  
4	
   Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  str	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  str.toString();	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return;	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (Exception	
  e)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  NOT	
  PRINTING	
  EXCEPTION	
  TRACE	
  -­‐	
  BAD	
  PRACTICE	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Exception	
  Handled	
  -­‐	
  Method	
  2");	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return;	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  finally	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  connection.close();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
Is	
  a	
  try	
  block	
  without	
  corresponding	
  catch	
  	
  block	
  allowed?	
  
Yes.	
  try	
  without	
  a	
  catch	
  is	
  allowed.	
  Example	
  below.	
  
private	
  static	
  void	
  method2()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  Connection	
  connection	
  =	
  new	
  Connection();	
  
	
  	
  	
  	
  	
  	
  	
  	
  connection.open();	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  LOGIC	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  str	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  str.toString();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  finally	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  connection.close();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
However	
  a	
  try	
  block	
  without	
  both	
  catch	
  and	
  finally	
  is	
  NOT	
  allowed.	
  	
  
Below method would give a Compilation Error!! (End of try block)
	
  	
  	
  	
  private	
  static	
  void	
  method2()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  Connection	
  connection	
  =	
  new	
  Connection();	
  
	
  	
  	
  	
  	
  	
  	
  	
  connection.open();	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  LOGIC	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  str	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  str.toString();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }//COMPILER	
  ERROR!!	
  
	
  	
  	
  	
  }	
  
Explain	
  the	
  hierarchy	
  of	
  Exception	
  related	
  classes	
  in	
  Java?	
  
Throwable is the highest level of Error Handling classes.
Below class definitions show the pre-defined exception hierarchy in Java.
//Pre-­‐defined	
  Java	
  Classes	
  
class	
  Error	
  extends	
  Throwable{}	
  
class	
  Exception	
  extends	
  Throwable{}	
  
class	
  RuntimeException	
  extends	
  Exception{}	
  
	
  
Below class definitions show creation of a programmer defined exception in Java.	
  
//Programmer	
  defined	
  classes	
  
class	
  CheckedException1	
  extends	
  Exception{}	
  
Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   5	
  
	
  
class	
  CheckedException2	
  extends	
  CheckedException1{}	
  
	
  
class	
  UnCheckedException	
  extends	
  RuntimeException{}	
  
class	
  UnCheckedException2	
  extends	
  UnCheckedException{}	
  
What	
  is	
  difference	
  between	
  an	
  Error	
  and	
  an	
  Exception?	
  
Error is used in situations when there is nothing a programmer can do about an error. Ex:
StackOverflowError, OutOfMemoryError. Exception is used when a programmer can handle the
exception.
What	
   is	
   the	
   difference	
   between	
   a	
   	
   Checked	
   Exception	
   and	
   an	
   Un-­‐Checked	
  
Exception?	
  
RuntimeException and classes that extend RuntimeException are called unchecked exceptions. For
Example: RuntimeException,UnCheckedException,UnCheckedException2 are unchecked or RunTime
Exceptions. There are subclasses of RuntimeException (which means they are subclasses of Exception
also.)
Other Exception Classes (which don’t fit the earlier definition). These are also called Checked Exceptions.
Exception, CheckedException1,CheckedException2 are checked exceptions. They are subclasses of
Exception which are not subclasses of RuntimeException.
How	
  do	
  you	
  throw	
  a	
  Checked	
  Exception	
  from	
  a	
  Method?
Consider the example below. The method addAmounts throws a new Exception. However, it gives us a
compilation error because Exception is a Checked Exception.
All classes that are not RuntimeException or subclasses of RuntimeException but extend Exception are
called CheckedExceptions. The rule for CheckedExceptions is that they should be handled or thrown.
Handled means it should be completed handled - i.e. not throw out of the method. Thrown means the
method should declare that it throws the exception
Example	
  without	
  throws:	
  Does	
  NOT	
  compile	
  
class	
  AmountAdder	
  {	
  
	
  	
  	
  	
  static	
  Amount	
  addAmounts(Amount	
  amount1,	
  Amount	
  amount2)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  if	
  (!amount1.currency.equals(amount2.currency))	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  throw	
   new	
   Exception("Currencies	
   don't	
   match");//	
   COMPILER	
   ERROR!	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
//	
  Unhandled	
  exception	
  type	
  Exception	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  new	
  Amount(amount1.currency,	
  amount1.amount	
  +	
  amount2.amount);	
  
	
  	
  	
  	
  }	
  
}	
  
Example	
  with	
  throws	
  definition
Let's look at how to declare throwing an exception from a method.
Look at the line "static Amount addAmounts(Amount amount1, Amount amount2) throws Exception". This
is how we declare that a method throws Exception.
	
  
class	
  AmountAdder	
  {	
  
	
  	
  	
  	
  static	
  Amount	
  addAmounts(Amount	
  amount1,	
  Amount	
  amount2)	
  throws	
  Exception	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  if	
  (!amount1.currency.equals(amount2.currency))	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  throw	
  new	
  Exception("Currencies	
  don't	
  match");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  new	
  Amount(amount1.currency,	
  amount1.amount	
  +	
  amount2.amount);	
  
6	
   Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
How	
  do	
  you	
  create	
  a	
  Custom	
  Exception	
  Classes?	
  
We can create a custom exception by extending Exception class or RuntimeException class. If we extend
Exception class, it will be a checked exception class. If we extend RuntimeException class, then we
create an unchecked exception class.
Example	
  
class	
  CurrenciesDoNotMatchException	
  extends	
  Exception{	
  
}	
  
Let’s now create some sample code to use CurrenciesDoNotMatchException. Since it is a checked
exception we need do two things a. throw	
   new	
   CurrenciesDoNotMatchException();	
   b.	
   throws	
  
CurrenciesDoNotMatchException	
  (in	
  method	
  declaration).	
  
class	
  AmountAdder	
  {	
  
	
  	
  	
  	
  static	
  Amount	
  addAmounts(Amount	
  amount1,	
  Amount	
  amount2)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  throws	
  CurrenciesDoNotMatchException	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  if	
  (!amount1.currency.equals(amount2.currency))	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  throw	
  new	
  CurrenciesDoNotMatchException();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  new	
  Amount(amount1.currency,	
  amount1.amount	
  +	
  amount2.amount);	
  
	
  	
  	
  	
  }	
  
}	
  
How	
  should	
  the	
  Exception	
  catch	
  blocks	
  be	
  ordered	
  ?	
  
Specific Exception catch blocks should be before the catch block for a Generic Exception. For example,
CurrenciesDoNotMatchException should be before Exception. Below code gives a compilation error.
	
  	
  	
  	
  public	
  static	
  void	
  main(String[]	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  AmountAdder.addAmounts(new	
  Amount("RUPEE",	
  5),	
  new	
  Amount("DOLLAR",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  5));	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (Exception	
  e)	
  {	
  //	
  COMPILER	
  ERROR!!	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Handled	
  Exception");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (CurrenciesDoNotMatchException	
  e)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Handled	
  CurrenciesDoNotMatchException");	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
Can	
  you	
  explain	
  some	
  Exception	
  Handling	
  Best	
  Practices?	
  
Never Completely Hide Exceptions. At the least log them. printStactTrace method prints the entire stack
trace when an exception occurs. If you handle an exception, it is always a good practice to log the trace.
	
  	
  	
  	
  public	
  static	
  void	
  main(String[]	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  try	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  AmountAdder.addAmounts(new	
  Amount("RUPEE",	
  5),	
  new	
  Amount("RUPEE",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  5));	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  String	
  string	
  =	
  null;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  string.toString();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (CurrenciesDoNotMatchException	
  e)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Handled	
  CurrenciesDoNotMatchException");	
  
Java	
  Interview	
  Questions	
  –	
  www.JavaInterview.in	
   7	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  e.printStackTrace();	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
Videos	
  
We	
  have	
  created	
  more	
  than	
  20	
  videos	
  to	
  help	
  you	
  understand	
  these	
  topics	
  and	
  become	
  an	
  expert	
  at	
  
them.	
  	
  You	
  can	
  watch	
  these	
  videos	
  for	
  free	
  on	
  YouTube.	
  Visit	
  our	
  website	
  http://www.JavaInterview.in	
  
for	
  complete	
  list	
  of	
  videos.	
  We	
  answer	
  the	
  top	
  200	
  frequently	
  asked	
  interview	
  questions	
  on	
  the	
  website.	
  
Register	
  here	
  for	
  more	
  updates	
  :	
  https://feedburner.google.com/fb/a/mailverify?uri=RithusTutorials	
  	
  
Java	
  Interview	
  :	
  A	
  Freshers	
  Guide	
  -­‐	
  Part	
  1:	
  https://www.youtube.com/watch?v=njZ48YVkei0	
  
Java	
  Interview	
  :	
  A	
  Freshers	
  Guide	
  -­‐	
  Part	
  2:	
  https://www.youtube.com/watch?v=xyXuo0y-xoU	
  
Java	
  Interview	
  :	
  A	
  Guide	
  for	
  Experienced:	
  https://www.youtube.com/watch?v=0xcgzUdTO5M
Collections	
  Interview	
  Questions	
  1:	
  https://www.youtube.com/watch?v=GnR4hCvEIJQ
Collections	
  Interview	
  Questions	
  2:	
  https://www.youtube.com/watch?v=6dKGpOKAQqs
Collections	
  Interview	
  Questions	
  3:	
  https://www.youtube.com/watch?v=_JTIYhnLemA
Collections	
  Interview	
  Questions	
  4:	
  https://www.youtube.com/watch?v=ZNhT_Z8_q9s
Collections	
  Interview	
  Questions	
  5:	
  https://www.youtube.com/watch?v=W5c8uXi4qTw

More Related Content

PDF
Java object oriented programming - OOPS
PPT
Multi catch statement
PPTX
L14 exception handling
PDF
Java multi threading and synchronization
PDF
Advanced java interview questions
PPTX
Exceptions in Java
PDF
Exception Handling in Java
DOCX
Exceptions handling notes in JAVA
Java object oriented programming - OOPS
Multi catch statement
L14 exception handling
Java multi threading and synchronization
Advanced java interview questions
Exceptions in Java
Exception Handling in Java
Exceptions handling notes in JAVA

What's hot (20)

PPTX
JAVA - Throwable class
PDF
Java review: try catch
PPS
Java Exception handling
PPTX
Exceptional Handling in Java
PPT
Types of exceptions
PDF
Java - Exception Handling Concepts
PPT
Java exception
PDF
Built in exceptions
PDF
B.Sc. III(VI Sem) Advance Java Unit1: Exception Handling & Multithreading
PPTX
Exception handling in java
PPTX
Exception Handling in Java
PDF
Java exceptions
PPTX
Chap2 exception handling
PPT
exception handling in java
PPTX
Exceptionhandling
PPTX
Exception handling in java
PPTX
Java -Exception handlingunit-iv
PPTX
Exception Handling in Java
PPTX
Nalinee java
PPTX
Exception handling in java
JAVA - Throwable class
Java review: try catch
Java Exception handling
Exceptional Handling in Java
Types of exceptions
Java - Exception Handling Concepts
Java exception
Built in exceptions
B.Sc. III(VI Sem) Advance Java Unit1: Exception Handling & Multithreading
Exception handling in java
Exception Handling in Java
Java exceptions
Chap2 exception handling
exception handling in java
Exceptionhandling
Exception handling in java
Java -Exception handlingunit-iv
Exception Handling in Java
Nalinee java
Exception handling in java
Ad

Similar to Java exception handling (20)

PPTX
Exception Handling,finally,catch,throw,throws,try.pptx
PPTX
Exception Hnadling java programming language
PPTX
Unit 4 exceptions and threads
PPTX
presentation-on-exception-handling 1.pptx
PPTX
presentation-on-exception-handling-160611180456 (1).pptx
PDF
Java unit3
DOCX
Exception handling in java
PPT
8.Exception handling latest(MB).ppt .
PPTX
presentation-on-exception-handling-160611180456 (1).pptx
PPTX
Exceptions handling in java
PDF
7_exception.pdf
PPTX
Exception handling
PPTX
UNIT 2.pptx
PPTX
Exception handling in java.pptx
PDF
JAVA PPT -4 BY ADI.pdf
DOCX
Java Exception handling
PPTX
Exception handling in java
PPTX
Exception handling in java
PPTX
Exception handling, Stream Classes, Multithread Programming
PPTX
Unit-4 Java ppt for BCA Students Madras Univ
Exception Handling,finally,catch,throw,throws,try.pptx
Exception Hnadling java programming language
Unit 4 exceptions and threads
presentation-on-exception-handling 1.pptx
presentation-on-exception-handling-160611180456 (1).pptx
Java unit3
Exception handling in java
8.Exception handling latest(MB).ppt .
presentation-on-exception-handling-160611180456 (1).pptx
Exceptions handling in java
7_exception.pdf
Exception handling
UNIT 2.pptx
Exception handling in java.pptx
JAVA PPT -4 BY ADI.pdf
Java Exception handling
Exception handling in java
Exception handling in java
Exception handling, Stream Classes, Multithread Programming
Unit-4 Java ppt for BCA Students Madras Univ
Ad

Recently uploaded (20)

PDF
Pre independence Education in Inndia.pdf
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
Insiders guide to clinical Medicine.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Complications of Minimal Access Surgery at WLH
PPTX
Lesson notes of climatology university.
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
Sports Quiz easy sports quiz sports quiz
PPTX
Pharma ospi slides which help in ospi learning
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
01-Introduction-to-Information-Management.pdf
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
master seminar digital applications in india
Pre independence Education in Inndia.pdf
STATICS OF THE RIGID BODIES Hibbelers.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
Supply Chain Operations Speaking Notes -ICLT Program
Insiders guide to clinical Medicine.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Complications of Minimal Access Surgery at WLH
Lesson notes of climatology university.
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Renaissance Architecture: A Journey from Faith to Humanism
Sports Quiz easy sports quiz sports quiz
Pharma ospi slides which help in ospi learning
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
01-Introduction-to-Information-Management.pdf
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Microbial disease of the cardiovascular and lymphatic systems
master seminar digital applications in india

Java exception handling

  • 1. Java  Interview  Questions  –  www.JavaInterview.in   1     Exception  Handling   Explain  about  Exception  Handling  with  an  example.   Exception Handling helps us to recover from an unexpected situations – File not found or network connection is down. The important part in exception handling is the try – catch block. Look at the example below.        public  static  void  main(String[]  args)  {                  method1();                  System.out.println("Line  after  Exception  -­‐  Main");          }            private  static  void  method1()  {                  method2();                  System.out.println("Line  after  Exception  -­‐  Method  1");          }            private  static  void  method2()  {                  try  {                          String  str  =  null;                          str.toString();                          System.out.println("Line  after  Exception  -­‐  Method  2");                  }  catch  (Exception  e)  {                          //  NOT  PRINTING  EXCEPTION  TRACE-­‐  BAD  PRACTICE                          System.out.println("Exception  Handled  -­‐  Method  2");                  }          }   Program  Output   Exception Handled - Method 2 Line after Exception - Method 1 Line after Exception - Main When exception is handled in a method, the calling methods will not need worry about that exception. Since Exception Handling is added in the method method2, the exception did not propogate to method1 i.e. method1 does not know about the exception in method2. Few important things to remember from this example. • If exception is handled, it does not propogate further. • In a try block, the lines after the line throwing the exception are not executed. What  is  the  use  of  finally  block  in  Exception  Handling?   When an exception happens, the code after the line throwing exception is not executed. If code for things like closing a connection is present in these lines of code, it is not executed. This leads to connection and other resource leaks. Code written in finally block is executed even when there is an exception.
  • 2. 2   Java  Interview  Questions  –  www.JavaInterview.in       Consider the example below. This is code without a finally block . We have Connection class with open and close methods. An exception happens in the main method. The connection is not closed because there is no finally block.   class  Connection  {          void  open()  {                  System.out.println("Connection  Opened");          }            void  close()  {                  System.out.println("Connection  Closed");          }   }     public  class  ExceptionHandlingExample1  {            public  static  void  main(String[]  args)  {                  try  {                          Connection  connection  =  new  Connection();                          connection.open();                            //  LOGIC                          String  str  =  null;                          str.toString();                            connection.close();                  }  catch  (Exception  e)  {                          //  NOT  PRINTING  EXCEPTION  TRACE-­‐  BAD  PRACTICE                          System.out.println("Exception  Handled  -­‐  Main");                  }          }   }   Output Connection Opened Exception Handled - Main Connection that is opened is not closed. This results in a dangling (un-closed) connection. Finally block is used when code needs to be executed irrespective of whether an exception is thrown. Let us now move connection.close(); into a finally block. Also connection declaration is moved out of the try block to make it visible in the finally block.        public  static  void  main(String[]  args)  {                  Connection  connection  =  new  Connection();                  connection.open();                  try  {                          //  LOGIC                          String  str  =  null;                          str.toString();                    }  catch  (Exception  e)  {                          //  NOT  PRINTING  EXCEPTION  TRACE  -­‐  BAD  PRACTICE                          System.out.println("Exception  Handled  -­‐  Main");                  }  finally  {                          connection.close();  
  • 3. Java  Interview  Questions  –  www.JavaInterview.in   3                    }          }   Output Connection Opened Exception Handled - Main Connection Closed Connection is closed even when exception is thrown. This is because connection.close() is called in the finally block. Finally block is always executed (even when an exception is thrown). So, if we want some code to be always executed we can move it to finally block.   Java  Interview  Questions  –  www.JavaInterview.in   At  http://www.JavaInterview.in,  we  want  you  to  clear  java  interview  with  ease.  So,  in  addition  to   focussing  on  Core  and  Advanced  Java  we  also  focus  on  topics  like  Code  Reviews,  Performance,    Design   Patterns,  Spring  and  Struts.   We  have  created  more  than  20  videos  to  help  you  understand  these  topics  and  become  an  expert  at   them.  Visit  our  website  http://www.JavaInterview.in  for  complete  list  of  videos.    Other  than  the  videos,   we  answer  the  top  200  frequently  asked  interview  questions  on  our  website.   With  more  900K  video  views  (Apr  2015),  we  are  the  most  popular  channel  on  Java  Interview  Questions   on  YouTube.   Register  here  for  more  updates  :  https://feedburner.google.com/fb/a/mailverify?uri=RithusTutorials   Java  Interview  :  A  Freshers  Guide  -­‐  Part  1:  https://www.youtube.com/watch?v=njZ48YVkei0   Java  Interview  :  A  Freshers  Guide  -­‐  Part  2:  https://www.youtube.com/watch?v=xyXuo0y-xoU     In  what  kind  of  scenarios,  a  finally  block  is  not  executed?   Code in finally is NOT executed only in two situations. 1. If exception is thrown in finally. 2. If JVM Crashes in between (for example, System.exit()). Is  a  finally  block  executed  even  when  there  is  a  return  statement  in  the  try   block?   private  static  void  method2()  {                  Connection  connection  =  new  Connection();                  connection.open();                  try  {                          //  LOGIC          
  • 4. 4   Java  Interview  Questions  –  www.JavaInterview.in                              String  str  =  null;                          str.toString();                          return;                  }  catch  (Exception  e)  {                          //  NOT  PRINTING  EXCEPTION  TRACE  -­‐  BAD  PRACTICE                          System.out.println("Exception  Handled  -­‐  Method  2");                          return;                  }  finally  {                          connection.close();                  }          }   Is  a  try  block  without  corresponding  catch    block  allowed?   Yes.  try  without  a  catch  is  allowed.  Example  below.   private  static  void  method2()  {                  Connection  connection  =  new  Connection();                  connection.open();                  try  {                          //  LOGIC                          String  str  =  null;                          str.toString();                  }  finally  {                          connection.close();                  }          }   However  a  try  block  without  both  catch  and  finally  is  NOT  allowed.     Below method would give a Compilation Error!! (End of try block)        private  static  void  method2()  {                  Connection  connection  =  new  Connection();                  connection.open();                  try  {                          //  LOGIC                          String  str  =  null;                          str.toString();                  }//COMPILER  ERROR!!          }   Explain  the  hierarchy  of  Exception  related  classes  in  Java?   Throwable is the highest level of Error Handling classes. Below class definitions show the pre-defined exception hierarchy in Java. //Pre-­‐defined  Java  Classes   class  Error  extends  Throwable{}   class  Exception  extends  Throwable{}   class  RuntimeException  extends  Exception{}     Below class definitions show creation of a programmer defined exception in Java.   //Programmer  defined  classes   class  CheckedException1  extends  Exception{}  
  • 5. Java  Interview  Questions  –  www.JavaInterview.in   5     class  CheckedException2  extends  CheckedException1{}     class  UnCheckedException  extends  RuntimeException{}   class  UnCheckedException2  extends  UnCheckedException{}   What  is  difference  between  an  Error  and  an  Exception?   Error is used in situations when there is nothing a programmer can do about an error. Ex: StackOverflowError, OutOfMemoryError. Exception is used when a programmer can handle the exception. What   is   the   difference   between   a     Checked   Exception   and   an   Un-­‐Checked   Exception?   RuntimeException and classes that extend RuntimeException are called unchecked exceptions. For Example: RuntimeException,UnCheckedException,UnCheckedException2 are unchecked or RunTime Exceptions. There are subclasses of RuntimeException (which means they are subclasses of Exception also.) Other Exception Classes (which don’t fit the earlier definition). These are also called Checked Exceptions. Exception, CheckedException1,CheckedException2 are checked exceptions. They are subclasses of Exception which are not subclasses of RuntimeException. How  do  you  throw  a  Checked  Exception  from  a  Method? Consider the example below. The method addAmounts throws a new Exception. However, it gives us a compilation error because Exception is a Checked Exception. All classes that are not RuntimeException or subclasses of RuntimeException but extend Exception are called CheckedExceptions. The rule for CheckedExceptions is that they should be handled or thrown. Handled means it should be completed handled - i.e. not throw out of the method. Thrown means the method should declare that it throws the exception Example  without  throws:  Does  NOT  compile   class  AmountAdder  {          static  Amount  addAmounts(Amount  amount1,  Amount  amount2)  {                  if  (!amount1.currency.equals(amount2.currency))  {                          throw   new   Exception("Currencies   don't   match");//   COMPILER   ERROR!                             //  Unhandled  exception  type  Exception                  }                  return  new  Amount(amount1.currency,  amount1.amount  +  amount2.amount);          }   }   Example  with  throws  definition Let's look at how to declare throwing an exception from a method. Look at the line "static Amount addAmounts(Amount amount1, Amount amount2) throws Exception". This is how we declare that a method throws Exception.   class  AmountAdder  {          static  Amount  addAmounts(Amount  amount1,  Amount  amount2)  throws  Exception  {                  if  (!amount1.currency.equals(amount2.currency))  {                          throw  new  Exception("Currencies  don't  match");                  }                  return  new  Amount(amount1.currency,  amount1.amount  +  amount2.amount);  
  • 6. 6   Java  Interview  Questions  –  www.JavaInterview.in              }   }   How  do  you  create  a  Custom  Exception  Classes?   We can create a custom exception by extending Exception class or RuntimeException class. If we extend Exception class, it will be a checked exception class. If we extend RuntimeException class, then we create an unchecked exception class. Example   class  CurrenciesDoNotMatchException  extends  Exception{   }   Let’s now create some sample code to use CurrenciesDoNotMatchException. Since it is a checked exception we need do two things a. throw   new   CurrenciesDoNotMatchException();   b.   throws   CurrenciesDoNotMatchException  (in  method  declaration).   class  AmountAdder  {          static  Amount  addAmounts(Amount  amount1,  Amount  amount2)                          throws  CurrenciesDoNotMatchException  {                  if  (!amount1.currency.equals(amount2.currency))  {                          throw  new  CurrenciesDoNotMatchException();                  }                  return  new  Amount(amount1.currency,  amount1.amount  +  amount2.amount);          }   }   How  should  the  Exception  catch  blocks  be  ordered  ?   Specific Exception catch blocks should be before the catch block for a Generic Exception. For example, CurrenciesDoNotMatchException should be before Exception. Below code gives a compilation error.        public  static  void  main(String[]  args)  {                  try  {                          AmountAdder.addAmounts(new  Amount("RUPEE",  5),  new  Amount("DOLLAR",                                          5));                  }  catch  (Exception  e)  {  //  COMPILER  ERROR!!                          System.out.println("Handled  Exception");                  }  catch  (CurrenciesDoNotMatchException  e)  {                          System.out.println("Handled  CurrenciesDoNotMatchException");                  }          }   Can  you  explain  some  Exception  Handling  Best  Practices?   Never Completely Hide Exceptions. At the least log them. printStactTrace method prints the entire stack trace when an exception occurs. If you handle an exception, it is always a good practice to log the trace.        public  static  void  main(String[]  args)  {                  try  {                          AmountAdder.addAmounts(new  Amount("RUPEE",  5),  new  Amount("RUPEE",                                          5));                          String  string  =  null;                          string.toString();                  }  catch  (CurrenciesDoNotMatchException  e)  {                          System.out.println("Handled  CurrenciesDoNotMatchException");  
  • 7. Java  Interview  Questions  –  www.JavaInterview.in   7                            e.printStackTrace();                  }          }   Videos   We  have  created  more  than  20  videos  to  help  you  understand  these  topics  and  become  an  expert  at   them.    You  can  watch  these  videos  for  free  on  YouTube.  Visit  our  website  http://www.JavaInterview.in   for  complete  list  of  videos.  We  answer  the  top  200  frequently  asked  interview  questions  on  the  website.   Register  here  for  more  updates  :  https://feedburner.google.com/fb/a/mailverify?uri=RithusTutorials     Java  Interview  :  A  Freshers  Guide  -­‐  Part  1:  https://www.youtube.com/watch?v=njZ48YVkei0   Java  Interview  :  A  Freshers  Guide  -­‐  Part  2:  https://www.youtube.com/watch?v=xyXuo0y-xoU   Java  Interview  :  A  Guide  for  Experienced:  https://www.youtube.com/watch?v=0xcgzUdTO5M Collections  Interview  Questions  1:  https://www.youtube.com/watch?v=GnR4hCvEIJQ Collections  Interview  Questions  2:  https://www.youtube.com/watch?v=6dKGpOKAQqs Collections  Interview  Questions  3:  https://www.youtube.com/watch?v=_JTIYhnLemA Collections  Interview  Questions  4:  https://www.youtube.com/watch?v=ZNhT_Z8_q9s Collections  Interview  Questions  5:  https://www.youtube.com/watch?v=W5c8uXi4qTw