Java Exceptions Tutorial

Exception are used in Java to handle errors or any other exceptional event that occurs in the normal flow of program. There are several way Exception can occur in Java.

  • Data provided is not in expected format(eg. int instead of String).
  • DB can not connected.
  • Network connection Lost.
  • Object is null.
  • …..

Java Exception Hierarchy

Every Exception in Java is sub type of Exception class which in turn is the subclass of Throwable. And as we know everything in Java derived from Object class Throwable also derived from class Object. Exception and Error are two different classes that derived from Throwable. Errors represent situation which doesn’t occur because of Programming error but that might happen at the time of program execution and these are abnormal behavior which java  program can not handle and shouldn’t bother to handle. JVM running out of memory is a type of Error which can occur at runtime.

Checked vs UnChecked Exception

Checked Exception

  1. Checked exceptions are subclass’s of Exception excluding RuntimeException and its subclasses.
  2. Checked Exceptions force programmers to deal with the exception that may be thrown.
  3. When a checked exception occurs in a method, the method must either catch the exception and take the appropriate action,or pass the exception on to its caller.

Example

Arithmetic exception.

Unchecked Exception

  1. Unchecked exceptions are RuntimeException and any of its subclasses.
  2. Compiler doesn’t force the programmers to either catch unchecked exception or declare it in a throws clause.
  3. Programmers may not even know that the exception could be thrown.
  4. Checked exceptions must be caught at compile time.
  5. Runtime exceptions do not need to be.

Example

ArrayIndexOutOfBounds Exception.

Java Exception Handling

Now we know that exception can occur in Java program at any time(or Any Location). So we need to know how to handle these exceptions.  Handling exception is required attribute in developing robust application. Handling Exception means transferring execution of program to appropriate handler when an exception occurs. We can handle exception by using try catch block.

try: try is used to define block of code where exception can occur.

catch: catch is used to match specific type of exception. There could be more than one catch clause for one try block.

finally: finally determine block of code which will always execute after try block. Even in case of Exception.

		try {
			throw new IOException();
		} catch (IOException e) {
			// Handle only IO Exception
			// This block will get executed only in case of IOException
		}catch (Exception e) {
			// Handle only all other type of exception
			// This block will get executed in case of all exception except IOException
		}finally{
			System.out.println("This block will get executed no matter exception occur or not");
		}

Note*: try clause can not stand without catch or finally block. Any of them is required.

Exception Propagation

It is not required to handle all exception thrown by try block in catch block (As it is not required block). In case catch block doesn’t handle exception thrown by try block, it will be propagated to method where this method was called from. In case previous method which called this method also doesn’t handle it, exception will propagated to previous method in method stack and it will keep propagating in the same way unless some method handle it. In case none of method handle it in call stack, exception will reach to bottom and it will be handled by JVM.

(Thanks to Mohita for Suggestion)

 

Cheat-sheet

  • Checked & unchecked exception are two type of Exception.
  • Checked exception are those exception which are subtype of Exception class but excluding classes which extends Runtime exception.
  • Subtype of Error and Runtime Exceptions comes under unchecked Exception.
  • Finally block will always be invoked in all condition.
  • System.exit() is the only way when finally block will not get executed coz in that case JVM will shut down.
  • Custom Exception can also be created by extending Exception class.
  • Catch block should be order in the form of most specific to most general. Otherwise compiler will complain for unreachable code.
Series Navigation<< Java Method OverrideCollection in Java >>
By | 2017-07-09T12:11:56+00:00 April 21st, 2012|Core Java|17 Comments

About the Author:

17 Comments

  1. dev nayak December 17, 2013 at 2:28 pm - Reply

    I am not getting the complete of any topic like exception,thread etc.
    There is no next botton or previous.so how can I get the complete
    Detail of a topic.

    • Bobbi February 9, 2016 at 5:12 am - Reply

      Unbbilevaele how well-written and informative this was.

  2. Babbu January 8, 2014 at 12:27 pm - Reply

    Hi,
    i cudnt find the exception handling tutorial..pls share the link or any other needful info reg this

  3. vivek July 25, 2014 at 10:19 am - Reply

    Your tutorial is very good for beginners and thanks for sharing it.

    While in “Exceptions” section, I think the tutorial is truncated and also images do not appear. Can you please fix it?

    Thanks you!!

    • Vivekanand Gautam July 26, 2014 at 5:23 am - Reply

      Hi Vivek,

      Thanks for your comment. Probably image has been deleted by me(My mistake). I will create a new article on Exception covering all the aspect and will upload the same soon.

      Meanwhile thank you for letting me know about this problem.

      Regards

  4. saranya November 8, 2014 at 7:18 am - Reply

    hai,
    i need the topic about database connectivity and file handling.. can u help me..

  5. zufri November 9, 2014 at 10:13 am - Reply

    Hi,

    From what i understand, ArithmeticException is an unchecked exception not checked. It still can compile. Example for checked exception are SQLException, IOException.

  6. Nishigandha Wagh January 8, 2015 at 5:21 pm - Reply

    Can you please add some example programs of exception handling.

    • Vivekanand Gautam January 10, 2015 at 4:33 pm - Reply

      I will try to do when i get time.

      • Muthu January 11, 2015 at 4:26 am - Reply

        Last interview I was asked a question that, “”Write a User exception & Use that exception class to Login program “”
        i) In case Login is invalid use User define Exception

        Admin will yu pls answer for this one…:-(

        • Vivekanand Gautam January 11, 2015 at 6:31 am - Reply

          Hi Muthu,

          For this you need to know how to extend a class. Create an Exception and extend that class with Throwable / Exception which ever suits you best. And inside that class do whatever you want to do with your exception. You can print custom message or perform any other operation.

          Now throw this exception from code where you are handling the login section.

          Hope it help.

          Regards
          Vivekanand Gautam

  7. whatever February 18, 2015 at 10:17 pm - Reply

    It’s literally just says, “We can handle exception by…” and then stops. lol, wow.

  8. shibasambhu April 23, 2015 at 6:59 am - Reply

    There is no Navigating symbol to go to the next page of the same chapter

  9. Ranganath November 25, 2015 at 3:29 am - Reply

    It can be included with Throws and Throwable Key word

  10. ram August 10, 2016 at 6:59 am - Reply

    hi

  11. basil August 25, 2016 at 4:08 am - Reply

    can u plz add some example

Leave A Comment