corejava第10版
This commit is contained in:
1 parent
2021c3c227
commit
6165543dd3
1088 files changed
+94411
No files matched your search
@@ -0,0 +1,174 @@
|
||||
package except;
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.event.*;
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
import java.util.*;
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @version 1.34 2015-08-20
|
||||
* @author Cay Horstmann
|
||||
*/
|
||||
public class ExceptTest
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
EventQueue.invokeLater(() ->
|
||||
{
|
||||
JFrame frame = new ExceptTestFrame();
|
||||
frame.setTitle("ExceptTest");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setVisible(true);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A frame with a panel for testing various exceptions
|
||||
*/
|
||||
class ExceptTestFrame extends JFrame
|
||||
{
|
||||
public ExceptTestFrame()
|
||||
{
|
||||
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
|
||||
{
|
||||
private ButtonGroup group;
|
||||
private JTextField textField;
|
||||
private double[] a = new double[10];
|
||||
|
||||
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)
|
||||
{
|
||||
System.out.println(textField.getAction().toString());
|
||||
}
|
||||
});
|
||||
|
||||
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];
|
||||
System.out.println(n);
|
||||
}
|
||||
});
|
||||
|
||||
addRadioButton("No such file", new ActionListener()
|
||||
{
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.out.println(
|
||||
new Scanner(Paths.get("woozle.txt"), "UTF-8").next());
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user