Exception Handling in Java: Explained

Exception Dealing with in Java is among the most essential ideas you study as a Java developer! This tutorial helps you correctly perceive and implement exception dealing with.

Each laptop program has a selected stream during which it runs. If one thing surprising occurs, it should disrupt the conventional stream of this system.

For instance dividing a numerical worth by zero or accessing an index that doesn’t exist in an array. This phenomenon turns into one exception when programming.

In easy phrases, an exception is one thing you did not anticipate to occur, however it could occur and also you then should cope with it.

Why does an exception happen?

The primary level right here is risk. There are a number of issues that may go fallacious. Community standing, person interplay, invalid enter, and so forth. are a number of the issues that may throw an exception. What’s essential is the way you deal with exceptions that you just suppose will occur a method or one other.

Exception dealing with by JVM

When an exception happens inside a Java program, an object is created that describes the exception, together with the kind and state of this system when it occurred. This object is then handed to the Java Digital Machine (JVM). The JVM tries to discover a methodology or perform to deal with the exception. It goes via an inventory of strategies that could possibly deal with the exception.

exception handling method.
Picture Credit: Oracle

As soon as it finds the correct methodology to deal with the exception, it transfers the exception to the tactic, but when it could’t discover a appropriate methodology, it terminates this system by calling the default exception-handling methodology.

Varieties of exceptions in Java

Types of exceptions in Java

There are two varieties of exceptions in Java:

checked: These sorts of exceptions are caught by the compiler at compile time. A number of the checked exceptions in Java are IOException and SQLException.

Not checked: The compiler is just not conscious of those exceptions at compile time as a result of they turn out to be obvious at runtime. They’re verified when the code is executed. Unchecked exceptions embrace ArrayIndexOutOfBoundsException and IllegalStateException.

Methods to deal with an exception

Listed below are some methods you may deal with or throw an exception:

  • attempt… catch block
  • throw/throw key phrase

#1. attempt… catch block

The try-catch block is used to execute a chunk of code the place there’s a risk that an exception may very well be thrown. The try And catch blocks are two separate blocks of code – catch block runs when the try block can not run usually.

attempt {
  // regular code
} catch(Exception e) {
  // code which handles an exception
}

There is also a Lastly block that you should utilize to execute code whether or not an exception is thrown or not. The code on this block is executed in all circumstances.

attempt {
  // regular code
} catch(Exception e) {
  // code which handles an exception
} lastly {
  // some code
}

#2. key phrase toss and toss

The to throw key phrase is used to explicitly throw a single exception. You should use to throw key phrase if you understand that an exception can actually happen for a selected situation.

public static void happen() {
  // situation
  throw new ArithmeticException();
}

public static void primary(String[] args) {
  attempt {
    happen();
  } catch(Exception e) {
    // deal with
  }
}

You should use the throws key phrase to specify a number of exceptions that you understand will happen with a selected methodology.

public static void happen() throws Exception1, Exception2, Exception3 {
  // circumstances which throw totally different exceptions
}

public static void primary(String[] args) {
  attempt {
    happen();
  } catch(Exception1 e) {
    //...
  } catch(Exception2 e) {
    //...
  } catch(Exception3 e) {
    //...
  }
}

Some widespread exceptions in Java

Some common exceptions in Java

#1. IOException

An IOException can happen in Java if there’s a drawback with the enter/output course of. It often happens once you attempt to entry a file and its contents, however the file doesn’t exist or there’s a drawback studying the contents in it.

import java.io.FileNotFoundException;
import java.io.FileReader;

public class Predominant {
    public static void primary(String[] args) {
        attempt {
            FileReader file = new FileReader("hi there.txt");
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
    }
}

#2. ArrayIndexOutOfBoundsException

An array is an information construction that shops values ​​of the identical knowledge sort and every worth has an index beginning at 0 and going as much as (n-1), the place n is the entire variety of values ​​current within the array. You entry a component by specifying its index with the identify of the variable that references the array:

array[index]

Now for those who attempt to entry a component with an index lower than 0 or better than (n-1), an exception can be thrown as a result of there isn’t a aspect in that particular index. The sort of exception is called ArrayIndexOutOfBoundsException and happens at runtime.

public class Predominant {
    public static void primary(String[] args) {
        attempt {
            int[] arr = {34, 1, 78, 3, 5};
            int aspect = arr[7];
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#3. ClassCastException

The sort of exception happens once you attempt to sort the article of a mother or father class with the kind of one in every of its subclasses. You too can get this exception for those who attempt to sort an object with a category it’s not appropriate with.

class A {
    public void show() {
        System.out.println("That is class A");
    }
}

class B extends A {
    public void show() {
        System.out.println("That is class B which is a subclass of A");
    }
}

class C extends B {
    public void show() {
        System.out.println("That is class C which is a subclass of B");
    }
}

public class Predominant {
    public static void primary(String[] args) {
        attempt {
            A objA = new A();
            B objB = (B) new A();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

The above code throws a ClassCastException as a result of we are attempting to sort an object of the mother or father class with the kind of its subclass.

#4. Unlawful ArgumentException

When a technique or perform receives an argument that isn’t legitimate, it could throw an IllegalArgumentException. For instance, suppose you create a technique to calculate the perimeter of a sq..

When you get a unfavourable worth when querying the size of a facet of the sq. from the person, you may throw this exception as a result of the facet of a sq. can’t be unfavourable.

public class Predominant {
    public static int perimeter(int size) {
        if(size < 0) {
            throw new IllegalArgumentException("No unfavourable values are allowed!");
        }
        return 4 * size;
    }

    public static void primary(String[] args) {
        attempt {
            System.out.println(perimeter(-5));
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#5. IllegalStateException

Whenever you name a technique or perform at a time when it shouldn’t be referred to as, you get an IllegalStateException. For instance, for those who name the beginning methodology on a thread that’s already began, Java throws this exception at runtime.

class AThread extends Thread {
    public void run() {
        System.out.println("It is a thread!");
    }
}

public class Predominant {
    public static void primary(String[] args) {
        attempt {
            AThread t = new AThread();
            t.begin();
            t.begin();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#6. NullPointerException

It happens once you attempt to entry properties of a null object or variable that references a null worth. Null is a particular worth in Java that signifies that no worth has been assigned to a reference variable.

public class Predominant {
    public static void primary(String[] args) {
        attempt {
            String num = null;
            System.out.println(num.size());
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#7. NumberFormatException

It happens once you attempt to convert an incorrectly formatted string to a quantity. For instance, for those who attempt to convert “null” or “twenty” right into a quantity, Java throws this exception.

public class Predominant {
    public static void primary(String[] args) {
        attempt {
            int num = Integer.parseInt("12,389");
            System.out.println(num);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Conclusion

Dealing with exceptions is essential as a result of they will trigger pointless interruptions within the stream of this system. Please be aware that exceptions are totally different from errors in that exceptions should be dealt with whereas errors can’t be dealt with. As an alternative, they must be fastened or repaired. You possibly can study extra about Java by taking these on-line Java programs.

Rate this post
Leave a Comment