Files
corejava/corejava第11版/v1ch07/except/ExceptTest.java
T
2019-05-22 19:43:15 +08:00

58 lines
1.5 KiB
Java

package except;
import java.nio.charset.*;
import java.nio.file.*;
import java.util.*;
import java.util.concurrent.*;
/**
* @version 1.40 2018-03-17
* @author Cay Horstmann
*/
public class ExceptTest
{
public static void main(String[] args)
{
int thousand = 1000;
double[] a = { 1000, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
performAction("Integer divide by zero", () -> 1 / (a.length - a.length));
performAction("Floating point divide by zero",
() -> a[2] / (a[3] - a[3]));
performAction("Integer overflow",
() -> thousand * thousand * thousand * thousand);
performAction("Square root of negative number", () -> Math.sqrt(-1));
performAction("Array index out of bounds", () -> a[1] - a[100]);
performAction("Bad cast", () -> (int[]) (Object) a);
performAction("Null pointer",
() -> System.getProperty("woozle").toString());
performAction("No such file",
() -> new Scanner(Paths.get("woozle.txt"), StandardCharsets.UTF_8).next());
}
/**
* Performs the given action and reports the result or failure.
* @param description the description of the action
* @param action the action to be carried out
*/
private static void performAction(String description,
Callable<Object> action)
{
System.out.println(description);
try
{
System.out.println(action.call());
}
catch (Throwable t)
{
System.out.println(t.getClass().getName() + ": " + t.getMessage());
}
}
}