This discussion is archived
11 Replies Latest reply: Jun 5, 2008 11:11 AM by 807591 RSS

How can I put all output error message into a String Variable ??

807591 Newbie
Currently Being Moderated
Dear Sir:

I have following code, When I run it and I press overflow radio button, It outputs following message:
Caught RuntimeException: java.lang.NullPointerException
java.lang.NullPointerException
     at ExceptionHandling.ExceptTest.actionPerformed(ExceptTest.java:72)
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
     at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
     at java.awt.Component.processMouseEvent(Component.java:6038)
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
     at java.awt.Component.processEvent(Component.java:5803)
     at java.awt.Container.processEvent(Container.java:2058)
     at java.awt.Component.dispatchEventImpl(Component.java:4410)
     at java.awt.Container.dispatchEventImpl(Container.java:2116)
     at java.awt.Component.dispatchEvent(Component.java:4240)
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
     at java.awt.Container.dispatchEventImpl(Container.java:2102)
     at java.awt.Window.dispatchEventImpl(Window.java:2429)
     at java.awt.Component.dispatchEvent(Component.java:4240)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)Caught RuntimeException: java.lang.NullPointerException

     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
I hope to catch all these error message into a String Variable such as StrErrorMsg, then I can use System.out.println(StrErrorMsg) to print it out or store somewhere, not only display at runtime,

How can I do this??
Thanks a lot,
See code below.



import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class ExceptTest extends JFrame implements ActionListener {
    private double[] a;
  private JRadioButton divideByZeroButton;

  private JRadioButton badCastButton;

  private JRadioButton arrayBoundsButton;

  private JRadioButton nullPointerButton;

  private JRadioButton negSqrtButton;

  private JRadioButton overflowButton;

  private JRadioButton noSuchFileButton;

  private JRadioButton throwUnknownButton;

  public ExceptTest() {
    JPanel p = new JPanel();
    ButtonGroup g = new ButtonGroup();
    p.setLayout(new GridLayout(8, 1));
    divideByZeroButton = addRadioButton("Divide by zero", g, p);
    badCastButton = addRadioButton("Bad cast", g, p);
    arrayBoundsButton = addRadioButton("Array bounds", g, p);
    nullPointerButton = addRadioButton("Null pointer", g, p);
    negSqrtButton = addRadioButton("sqrt(-1)", g, p);
    overflowButton = addRadioButton("Overflow", g, p);
    noSuchFileButton = addRadioButton("No such file", g, p);
    throwUnknownButton = addRadioButton("Throw unknown", g, p);
    getContentPane().add(p);
  }

  private JRadioButton addRadioButton(String s, ButtonGroup g, JPanel p) {
    JRadioButton button = new JRadioButton(s, false);
    button.addActionListener(this);
    g.add(button);
    p.add(button);
    return button;
  }

  public void actionPerformed(ActionEvent evt) {
    try {
      Object source = evt.getSource();
      if (source == divideByZeroButton) {
        a[1] = a[1] / a[1] - a[1];
      } else if (source == badCastButton) {
        Frame f = (Frame) evt.getSource();
      } else if (source == arrayBoundsButton) {
        a[1] = a[10];
      } else if (source == nullPointerButton) {
        Frame f = null;
        f.setSize(200, 200);
      } else if (source == negSqrtButton) {
        a[1] = Math.sqrt(-1);
      } else if (source == overflowButton) {
        a[1] = 1000 * 1000 * 1000 * 1000;
        int n = (int) a[1];
      } else if (source == noSuchFileButton) {
        FileInputStream is = new FileInputStream("Java Source and Support");
      } else if (source == throwUnknownButton) {
        throw new UnknownError();
      }
    } catch (RuntimeException e) {
      System.out.println("Caught RuntimeException: " + e);
      e.printStackTrace();
      System.out.println("Caught RuntimeException: " + e);
    } catch (Exception e) {
      System.out.println("Caught Exception: " + e);
    }
  }

  public static void main(String[] args) {
    JFrame frame = new ExceptTest();
    frame.setSize(150, 200);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    frame.show();
  }
}