jar -cfe except.jar except.ExceptTest except
说明:jar是命令
-cfe 是选项
-c, --create 创建档案
-f, --file=FILE 档案文件名。省略时, 基于操作使用 stdin 或 stdout
-e, --main-class=CLASSNAME 捆绑到模块化或可执行jar 档案的独立应用程序的应用程序入口点
except.jar是创建的jar包名字
except.ExceptTest是程序主入口
except是目录
===============
代码如下:
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);
}
}