Unit-5
Exception Handling: Introduction,
   Hierarchy of Standard Exception Classes, Keywords throws and throw, try, catch, and finally
   Blocks,:
   The Exception Handling in Java is one of the powerful mechanism to handle the runtime
   errors so that the normal flow of the application can be maintained.
   What is Exception in Java?
   Dictionary Meaning: Exception is an abnormal condition.
   In Java, an exception is an event that disrupts the normal flow of the program. It is an object
   which is thrown at runtime.
   What is Exception Handling?
   Exception Handling is a mechanism to handle runtime errors such as ClassNotFoundException,
   IOException, SQLException, RemoteException, etc.
   Advantage of Exception Handling
   The core advantage of exception handling is to maintain the normal flow of the application.
   An exception normally disrupts the normal flow of the application; that is why we need to handle
   exceptions. Let's consider a scenario:
1. statement 1;
2. statement 2;
3. statement 3;
4. statement 4;
5. statement 5;//exception occurs
6. statement 6;
7. statement 7;
8. statement 8;
9. statement 9;
10. statement 10;
Types of Java Exceptions
There are mainly two types of exceptions: checked and unchecked. An error is considered as the
unchecked exception. However, according to Oracle, there are three types of exceptions namely:
   1. Checked Exception
   2. Unchecked Exception
   3. Error
Difference between Checked and Unchecked Exceptions
1) Checked Exception
The classes that directly inherit the Throwable class except RuntimeException and Error are
known as checked exceptions. For example, IOException, SQLException, etc. Checked
exceptions are checked at compile-time.
2) Unchecked Exception
The classes that inherit the RuntimeException are known as unchecked exceptions. For example,
ArithmeticException,       NullPointerException,    ArrayIndexOutOfBoundsException,      etc.
Unchecked exceptions are not checked at compile-time, but they are checked at runtime.
3) Error
Error is irrecoverable. Some example of errors are OutOfMemoryError, VirtualMachineError,
AssertionError etc.
java Exception Keywords
Java provides five keywords that are used to handle the exception. The following table describes
each.
Keyword      Description
try         The "try" keyword is used to specify a block where we should place an exception
            code. It means we can't use try block alone. The try block must be followed by either
            catch or finally.
catch       The "catch" block is used to handle the exception. It must be preceded by try block
            which means we can't use catch block alone. It can be followed by finally block
            later.
finally     The "finally" block is used to execute the necessary code of the program. It is
            executed whether an exception is handled or not.
throw       The "throw" keyword is used to throw an exception.
throws      The "throws" keyword is used to declare exceptions. It specifies that there may
            occur an exception in the method. It doesn't throw an exception. It is always used
            with method signature.
java Exception Handling Example
Let's see an example of Java Exception Handling in which we are using a try-catch statement to
handle the exception.
     JavaExceptionExample.java
1. public class JavaExceptionExample{
2.    public static void main(String args[]){
3.    try{
4.        //code that may raise exception
5.        int data=100/0;
6.    }catch(ArithmeticException e){System.out.println(e);}
7.    //rest code of the program
8.    System.out.println("rest of the code...");
9.    }
10. }
    Test it Now
     Output:
     Exception in thread main java.lang.ArithmeticException:/ by zero
     rest of the code...
     In the above example, 100/0 raises an ArithmeticException which is handled by a try-catch
     block.
     Common Scenarios of Java Exceptions
     There are given some scenarios where unchecked exceptions may occur. They are as follows:
     1) A scenario where ArithmeticException occurs
     If we divide any number by zero, there occurs an ArithmeticException.
1. int a=50/0;//ArithmeticException
     2) A scenario where NullPointerException occurs
     If we have a null value in any variable, performing any operation on the variable throws a
     NullPointerException.
1. String s=null;
2. System.out.println(s.length());//NullPointerException
   3) A scenario where NumberFormatException occurs
   If the formatting of any variable or number is mismatched, it may result into
   NumberFormatException. Suppose we have a string variable that has characters; converting this
   variable into digit will cause NumberFormatException.
1. String s="abc";
2. int i=Integer.parseInt(s);//NumberFormatException
   4) A scenario where ArrayIndexOutOfBoundsException occurs
   When an array exceeds to it's size, the ArrayIndexOutOfBoundsException occurs. there may be
   other reasons to occur ArrayIndexOutOfBoundsException. Consider the following statements.
1. int a[]=new int[5];
2. a[10]=50; //ArrayIndexOutOfBoundsException
   Multiple Catch Clauses:
   Java Multi-catch block
   A try block can be followed by one or more catch blocks. Each catch block must contain a
   different exception handler. So, if you have to perform different tasks at the occurrence of
   different exceptions, use java multi-catch block.
   Points to remember
       o   At a time only one exception occurs and at a time only one catch block is executed.
       o   All catch blocks must be ordered from most specific to most general, i.e. catch for
           ArithmeticException must come before catch for Exception.
      Flowchart of Multi-catch Block
      Example 1
      Let's see a simple example of java multi-catch block.
      MultipleCatchBlock1.java
1. public class MultipleCatchBlock1 {
2.
3.      public static void main(String[] args) {
4.
5.          try{
6.             int a[]=new int[5];
7.             a[5]=30/0;
8.             }
9.             catch(ArithmeticException e)
10.                {
11.                System.out.println("Arithmetic Exception occurs");
12.                }
13.             catch(ArrayIndexOutOfBoundsException e)
14.              {
15.               System.out.println("ArrayIndexOutOfBounds Exception occurs");
16.              }
17.             catch(Exception e)
18.              {
19.               System.out.println("Parent Exception occurs");
20.              }
21.             System.out.println("rest of the code");
22.         }
23. }
      Arithmetic Exception occurs
      rest of the code
      When an exception does not occur
      Let's see the below example where the Java program does not throw any exception, and the
      finally block is executed after the try block.
      TestFinallyBlock.java
1. class TestFinallyBlock {
2.      public static void main(String args[]){
3.      try{
4. //below code do not throw any exception
5.      int data=25/5;
6.      System.out.println(data);
7.      }
8. //catch won't be executed
9.      catch(NullPointerException e){
10. System.out.println(e);
11. }
12. //executed regardless of exception occurred or not
13. finally {
14. System.out.println("finally block is always executed");
15. }
16.
17. System.out.println("rest of phe code...");
18. }
19. }
      Java throw keyword
      The Java throw keyword is used to throw an exception explicitly.
      We specify the exception object which is to be thrown. The Exception has some message with it
      that provides the error description. These exceptions may be related to user inputs, server, etc.
      We can throw either checked or unchecked exceptions in Java by throw keyword. It is mainly
      used to throw a custom exception. We will discuss custom exceptions later in this section.
      public class TestThrow1 {
        //function to check if person is eligible to vote or not
        public static void validate(int age) {
            if(age<18) {
                //throw Arithmetic exception if not eligible to vote
                throw new ArithmeticException("Person is not eligible to vote");
            else {
                System.out.println("Person is eligible to vote!!");
        //main method
        public static void main(String args[]){
          //calling the function
          validate(13);
          System.out.println("rest of the code...");
Java throws keyword
The Java throws keyword is used to declare an exception. It gives an information to the
programmer that there may occur an exception. So, it is better for the programmer to provide the
exception handling code so that the normal flow of the program can be maintain
Testthrows1.java
import java.io.IOException;
class Testthrows1{
    void m()throws IOException{
        throw new IOException("device error");//checked exception
    void n()throws IOException{
        m();
    void p(){
    try{
        n();
    }catch(Exception e){System.out.println("exception handled");}
    public static void main(String args[]){
     Testthrows1 obj=new Testthrows1();
     obj.p();
     System.out.println("normal flow...");
Sr.       Basis of Differences               throw                        throws
no.
1.        Definition                         Java throw keyword is        Java throws keyword is used
                                             used throw an exception      in the method signature to
                                             explicitly in the code,      declare an exception which
                                             inside the function or the   might be thrown by the
                                             block of code.               function while the execution
                                                                          of the code.
2.        Type of exception Using            Using throws keyword,
          throw keyword, we can only         we can declare both
          propagate          unchecked       checked and unchecked
          exception i.e., the checked        exceptions. However, the
          exception      cannot     be       throws keyword can be
          propagated using throw only.       used to propagate checked
                                             exceptions only.
3.        Syntax                             The throw keyword is The throws keyword is
                                             followed by an instance of followed by class names of
                                             Exception to be thrown.    Exceptions to be thrown.
4.        Declaration                        throw is used within the     throws is used with the
                                             method.                      method signature.
5.        Internal implementation            We are allowed to throw      We can declare multiple
                                             only one exception at a      exceptions using throws
                                             time i.e. we cannot throw    keyword that can be thrown
                                             multiple exceptions.         by the method. For example,
                                                                          main() throws IOException,
                                                                          SQLException.
Applets: Applet and its life cycle:
Java Applet
Applet is a special type of program that is embedded in the webpage to generate the dynamic
content. It runs inside the browser and works at client side.
Advantage of Applet
There are many advantages of applet. They are as follows:
   o   It works at client side so less response time.
   o   Secured
   o   It can be executed by browsers running under many plateforms, including Linux,
       Windows, Mac Os etc.
Drawback of Applet
   o   Plugin is required at client browser to execute applet.
Hierarchy of Applet
As displayed in the above diagram, Applet class extends Panel. Panel class extends Container which is th
subclass of Component.
Lifecycle of Java Applet
   1. Applet is initialized.
   2. Applet is started.
   3. Applet is painted.
   4. Applet is stopped.
   5. Applet is destroyed.
Lifecycle methods for Applet:
The java.applet.Applet class 4 life cycle methods and java.awt.Component class provides 1 life
cycle methods for an applet.
java.applet.Applet class
For creating any applet java.applet.Applet class must be inherited. It provides 4 life cycle
methods of applet.
   1. public void init(): is used to initialized the Applet. It is invoked only once.
   2. public void start(): is invoked after the init() method or browser is maximized. It is used
       to start the Applet.
   3. public void stop(): is used to stop the Applet. It is invoked when Applet is stop or
       browser is minimized.
   4. public void destroy(): is used to destroy the Applet. It is invoked only once.
java.awt.Component class
The Component class provides 1 life cycle method of applet.
   1. public void paint(Graphics g): is used to paint the Applet. It provides Graphics class
       object that can be used for drawing oval, rectangle, arc etc.
Who is responsible to manage the life cycle of an applet?
Java Plug-in software.
How to run an Applet?
There are two ways to run an applet
   1. By html file.
   2. By appletViewer tool (for testing purpose).
Simple example of Applet by html file:
To execute the applet by html file, create an applet and compile it. After that create an html file
and place the applet code in html file. Now click the html file.
1. //First.java
2. import java.applet.Applet;
3. import java.awt.Graphics;
4. public class First extends Applet{
5.
6. public void paint(Graphics g){
7. g.drawString("welcome",150,150);
8. }
9.      }
     Note: class must be public because its object is created by Java Plugin software that resides on
     the browser.
     myapplet.html
1. <html>
2. <body>
3. <applet code="First.class" width="300" height="300">
4. </applet>
5. </body>
6. </html>
     Simple example of Applet by appletviewer tool:
     To execute the applet by appletviewer tool, create an applet that contains applet tag in comment
     and compile it. After that run it by: appletviewer First.java. Now Html file is not required but it
     is for testing purpose only.
1. //First.java
2. import java.applet.Applet;
3. import java.awt.Graphics;
4. public class First extends Applet{
5.
6. public void paint(Graphics g){
7. g.drawString("welcome to applet",150,150);
8. }
9.
10. }
11. /*
12. <applet code="First.class" width="300" height="300">
13. </applet>
14. */
   To execute the applet by appletviewer tool, write in command prompt:
   c:\>javac First.java
   c:\>appletviewer First.java
   Introduction to swing:
   Java Swing Tutorial
   Java Swing tutorial is a part of Java Foundation Classes (JFC) that is used to create window-
   based applications. It is built on the top of AWT (Abstract Windowing Toolkit) API and entirely
   written in java.
   Unlike AWT, Java Swing provides platform-independent and lightweight components.
   The javax.swing package provides classes for java swing API such as JButton, JTextField,
   JTextArea, JRadioButton, JCheckbox, JMenu, JColorChooser etc.
   Difference between AWT and Swing
   There are many differences between java awt and swing that are given below.
   No.    Java AWT                                            Java Swing
   1)     AWT components are platform-dependent.              Java       swing      components
                                                              are platform-independent.
   2)     AWT components are heavyweight.                     Swing components are lightweight.
   3)     AWT doesn't support pluggable look and feel.        Swing supports pluggable look and
                                                          feel.
4)    AWT provides less components than Swing.            Swing provides more powerful
                                                          components such as tables, lists,
                                                          scrollpanes,       colorchooser,
                                                          tabbedpane etc.
5)    AWT doesn't follows MVC(Model View                  Swing follows MVC.
      Controller) where model represents data, view
      represents presentation and controller acts as an
      interface between model and view.
What is JFC
The Java Foundation Classes (JFC) are a set of GUI components which simplify the
development of desktop applications.
Hierarchy of Java Swing classes
The hierarchy of java swing API is given below.
Commonly used Methods of Component class
The methods of Component class are widely used in java swing that are given below.
Method                                         Description
public void add(Component c)                   add a component on another component.
public void setSize(int width,int height)      sets size of the component.
public void setLayout(LayoutManager m)         sets the layout manager for the component.
      public void setVisible(boolean b)                sets the visibility of the component. It is by default false.
      Java Swing Examples
      There are two ways to create a frame:
          o   By creating the object of Frame class (association)
          o   By extending Frame class (inheritance)
      We can write the code of swing inside the main(), constructor or any other method.
      Simple Java Swing Example
      Let's see a simple swing example where we are creating one button and adding it on the JFrame
      object inside the main() method.
      File: FirstSwingExample.java
1. import javax.swing.*;
2. public class FirstSwingExample {
3. public static void main(String[] args) {
4. JFrame f=new JFrame();//creating instance of JFrame
5.
6. JButton b=new JButton("click");//creating instance of JButton
7. b.setBounds(130,100,100, 40);//x axis, y axis, width, height
8.
9. f.add(b);//adding button in JFrame
10.
11. f.setSize(400,500);//400 width and 500 height
12. f.setLayout(null);//using no layout managers
13. f.setVisible(true);//making the frame visible
14. }
15. }
     Example of Swing by Association inside constructor
     We can also write all the codes of creating JFrame, JButton and method call inside the java
     constructor.
     File: Simple.java
1. import javax.swing.*;
2. public class Simple {
3. JFrame f;
4. Simple(){
5. f=new JFrame();//creating instance of JFrame
6.
7. JButton b=new JButton("click");//creating instance of JButton
8. b.setBounds(130,100,100, 40);
9.
10. f.add(b);//adding button in JFrame
11.
12. f.setSize(400,500);//400 width and 500 height
13. f.setLayout(null);//using no layout managers
14. f.setVisible(true);//making the frame visible
15. }
16.
17. public static void main(String[] args) {
18. new Simple();
19. }
20. }
      The setBounds(int xaxis, int yaxis, int width, int height)is used in the above example that sets the
      position of the button.
      Simple example of Swing by inheritance
      We can also inherit the JFrame class, so there is no need to create the instance of JFrame class
      explicitly.
      File: Simple2.java
1. import javax.swing.*;
2. public class Simple2 extends JFrame{//inheriting JFrame
3. JFrame f;
4. Simple2(){
5. JButton b=new JButton("click");//create button
6. b.setBounds(130,100,100, 40);
7.
8. add(b);//adding button on frame
9. setSize(400,500);
10. setLayout(null);
11. setVisible(true);
12. }
13. public static void main(String[] args) {
14. new Simple2();
15. }}
      Java JButton Example
1. import javax.swing.*;
2. public class ButtonExample {
3. public static void main(String[] args) {
4.       JFrame f=new JFrame("Button Example");
5.       JButton b=new JButton("Click Here");
6.       b.setBounds(50,100,95,30);
7.       f.add(b);
8.       f.setSize(400,400);
9.       f.setLayout(null);
10.      f.setVisible(true);
11. }
12. }
      Output:
      Java JTextField Example
1. import javax.swing.*;
2. class TextFieldExample
3. {
4. public static void main(String args[])
5.      {
6.      JFrame f= new JFrame("TextField Example");
7.      JTextField t1,t2;
8.      t1=new JTextField("Welcome to Javatpoint.");
9.      t1.setBounds(50,100, 200,30);
10.     t2=new JTextField("AWT Tutorial");
11.     t2.setBounds(50,150, 200,30);
12.     f.add(t1); f.add(t2);
13.     f.setSize(400,400);
14.     f.setLayout(null);
15.     f.setVisible(true);
16.     }
17.     }
      Output:
      Java JTextArea Example
1. import javax.swing.*;
2. public class TextAreaExample
3. {
4.      TextAreaExample(){
5.          JFrame f= new JFrame();
6.          JTextArea area=new JTextArea("Welcome to javatpoint");
7.          area.setBounds(10,30, 200,200);
8.          f.add(area);
9.          f.setSize(300,300);
10.         f.setLayout(null);
11.         f.setVisible(true);
12.     }
13. public static void main(String args[])
14.    {
15.    new TextAreaExample();
16.    }}
      Output:
      Java JCheckBox Example
1. import javax.swing.*;
2. public class CheckBoxExample
3. {
4.      CheckBoxExample(){
5.          JFrame f= new JFrame("CheckBox Example");
6.          JCheckBox checkBox1 = new JCheckBox("C++");
7.          checkBox1.setBounds(100,100, 50,50);
8.          JCheckBox checkBox2 = new JCheckBox("Java", true);
9.          checkBox2.setBounds(100,150, 50,50);
10.         f.add(checkBox1);
11.         f.add(checkBox2);
12.         f.setSize(400,400);
13.         f.setLayout(null);
14.         f.setVisible(true);
15.     }
16. public static void main(String args[])
17.     {
18.     new CheckBoxExample();
19.     }}
      Output:
      Java JRadioButton Example
1. import javax.swing.*;
2. public class RadioButtonExample {
3. JFrame f;
4. RadioButtonExample(){
5. f=new JFrame();
6. JRadioButton r1=new JRadioButton("A) Male");
7. JRadioButton r2=new JRadioButton("B) Female");
8. r1.setBounds(75,50,100,30);
9. r2.setBounds(75,100,100,30);
10. ButtonGroup bg=new ButtonGroup();
11. bg.add(r1);bg.add(r2);
12. f.add(r1);f.add(r2);
13. f.setSize(300,300);
14. f.setLayout(null);
15. f.setVisible(true);
16. }
17. public static void main(String[] args) {
18.     new RadioButtonExample();
19. }
20. }
      Output: