A frame with a panel for testing various exceptions : Exceptions « Language Basics « Java






A frame with a panel for testing various exceptions

A frame with a panel for testing various exceptions
   
/*
   This program is a part of the companion code for Core Java 8th ed.
   (http://horstmann.com/corejava)

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.awt.EventQueue;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

/**
 * @version 1.33 2007-06-12
 * @author Cay Horstmann
 */
public class ExceptTest
{
   public static void main(String[] args)
   {
      EventQueue.invokeLater(new Runnable()
         {
            public void run()
            {
               ExceptTestFrame frame = new ExceptTestFrame();
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               frame.setVisible(true);
            }
         });
   }
}

/**
 * A frame with a panel for testing various exceptions
 */
class ExceptTestFrame extends JFrame
{
   public ExceptTestFrame()
   {
      setTitle("ExceptTest");
      ExceptTestPanel panel = new ExceptTestPanel();
      add(panel);
      pack();
   }
}

/**
 * A panel with radio buttons for running code snippets and studying their exception behavior
 */
class ExceptTestPanel extends Box
{
   public ExceptTestPanel()
   {
      super(BoxLayout.Y_AXIS);
      group = new ButtonGroup();

      // add radio buttons for code snippets

      addRadioButton("Integer divide by zero", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               a[1] = 1 / (a.length - a.length);
            }
         });

      addRadioButton("Floating point divide by zero", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               a[1] = a[2] / (a[3] - a[3]);
            }
         });

      addRadioButton("Array bounds", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               a[1] = a[10];
            }
         });

      addRadioButton("Bad cast", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               a = (double[]) event.getSource();
            }
         });

      addRadioButton("Null pointer", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               event = null;
               System.out.println(event.getSource());
            }
         });

      addRadioButton("sqrt(-1)", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               a[1] = Math.sqrt(-1);
            }
         });

      addRadioButton("Overflow", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               a[1] = 1000 * 1000 * 1000 * 1000;
               int n = (int) a[1];
            }
         });

      addRadioButton("No such file", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               try
               {
                  InputStream in = new FileInputStream("woozle.txt");
               }
               catch (IOException e)
               {
                  textField.setText(e.toString());
               }
            }
         });

      addRadioButton("Throw unknown", new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               throw new UnknownError();
            }
         });

      // add the text field for exception display
      textField = new JTextField(30);
      add(textField);
   }

   /**
    * Adds a radio button with a given listener to the panel. Traps any exceptions in the
    * actionPerformed method of the listener.
    * @param s the label of the radio button
    * @param listener the action listener for the radio button
    */
   private void addRadioButton(String s, ActionListener listener)
   {
      JRadioButton button = new JRadioButton(s, false)
         {
            // the button calls this method to fire an
            // action event. We override it to trap exceptions
            protected void fireActionPerformed(ActionEvent event)
            {
               try
               {
                  textField.setText("No exception");
                  super.fireActionPerformed(event);
               }
               catch (Exception e)
               {
                  textField.setText(e.toString());
               }
            }
         };

      button.addActionListener(listener);
      add(button);
      group.add(button);
   }

   private ButtonGroup group;
   private JTextField textField;
   private double[] a = new double[10];
}

   
    
    
  








Related examples in the same category

1.Illustrate various Exceptions Illustrate various Exceptions
2.Experience exceptionsExperience exceptions
3.StackTrace
4.Getting the Stack Trace of an Exception
5.What happens if a method declares an unchecked exception?
6.Simple demo of exceptionsSimple demo of exceptions
7.Simple demo of exceptions, with finally clauseSimple demo of exceptions, with finally clause
8.ThreadBasedCatcher - Demonstrate catching uncaught exceptions
9.Exception CatcherException Catcher
10.Turning off Checked exceptions
11.Demonstrates exception chainingDemonstrates exception chaining
12.Finally is always executedFinally is always executed
13.Demonstrating the Exception MethodsDemonstrating the Exception Methods
14.Further embellishment of exception classesFurther embellishment of exception classes
15.The finally clause is always executedThe finally clause is always executed
16.Your own Exception classYour own Exception class
17.Catching exception hierarchiesCatching exception hierarchies
18.How an exception can be lost
19.Exception in main method
20.Ignoring RuntimeExceptionsIgnoring RuntimeExceptions
21.Demonstrating fillInStackTrace()Demonstrating fillInStackTrace()
22.Put printStackTrace() into a String: redirect the StackTrace to a String with a StringWriter/PrintWriter
23.Rethrow a different object from the one that was caughtRethrow a different object from the one that was caught
24.Inheriting your own exceptionsInheriting your own exceptions
25.Overridden methods may throw only the exceptions
26.Returns the output of printStackTrace as a String.
27.Locates a particular type of exception
28.Throw Exception OutThrow Exception Out
29.Get Deepest ThrowableGet Deepest Throwable
30.Make a string representation of the exception
31.Utility methods for dealing with stack traces
32.Returns the root cause of an exception
33.Utility class to work with throwables
34.Print all of the thread's information and stack traces
35.Convert an exception to a String with full stack trace
36.Return stack trace from the passed exception as a stringReturn stack trace from the passed exception as a string
37.Create a new RuntimeException, setting the cause if possible.
38.Create a new Exception, setting the cause if possible.
39.Set the cause of the Exception. Will detect if this is not allowed.
40.Get the stack trace of the supplied exception.
41.Display Stack Trace Information with StackTraceElement
42.A collection of utility methods for manipulating exceptions
43.Convert Throwable to string
44.Convert the result of Exception.getStackTrace to a String
45.Prints the stack trace of the specified throwable to a string and returns it.
46.Get Stack Trace Element
47.Get stack trace and cause exception
48.Exception Helper
49.Exception Util