使用 try、catch 和 throw 避免负数组大小异常
avoid Negative Array Size Exception with try, catch and throw
以下Java代码:
public class SomeClass {
int[] table;
int size;
public SomeClass(int size) {
this.size = size;
table = new int[size];
}
public static void main(String[] args) {
int[] sizes = {5, 3, -2, 2, 6, -4};
SomeClass testInst;
for (int i = 0; i < 6; i++) {
testInst = new SomeClass(sizes[i]);
System.out.println("New example size " + testInst.size);
}
}
}
SomeClass 的前两个实例(大小为 5 和 3)将毫无问题地创建。但是,当调用构造函数 SomeClass 时参数为 -2,会产生 运行 时间错误:NegativeArraySizeException.
我如何修改上面的代码,使其通过使用 try、catch 和 throw 表现得更健壮。 main 方法应捕获此异常并打印一条警告消息,然后继续执行循环。
我是 java 新手,非常感谢您的帮助。
谢谢
使 class 构造函数抛出错误并在主 class 中捕获它,如下所示:
public class SomeClass {
int[] table;
int size;
public SomeClass(int size) throws NegativeArraySizeException{
this.size = size;
table = new int[size];
}
public static void main(String[] args) {
int[] sizes = {5, 3, -2, 2, 6, -4};
SomeClass testInst;
for (int i = 0; i < 6; i++) {
try {
testInst = new SomeClass(sizes[i]);
System.out.println("New example size " + testInst.size);
}
catch (NegativeArraySizeException err) {
System.out.println(err.toString());
}
}
}
}
输出将是
以下Java代码:
public class SomeClass {
int[] table;
int size;
public SomeClass(int size) {
this.size = size;
table = new int[size];
}
public static void main(String[] args) {
int[] sizes = {5, 3, -2, 2, 6, -4};
SomeClass testInst;
for (int i = 0; i < 6; i++) {
testInst = new SomeClass(sizes[i]);
System.out.println("New example size " + testInst.size);
}
}
}
SomeClass 的前两个实例(大小为 5 和 3)将毫无问题地创建。但是,当调用构造函数 SomeClass 时参数为 -2,会产生 运行 时间错误:NegativeArraySizeException.
我如何修改上面的代码,使其通过使用 try、catch 和 throw 表现得更健壮。 main 方法应捕获此异常并打印一条警告消息,然后继续执行循环。
我是 java 新手,非常感谢您的帮助。
谢谢
使 class 构造函数抛出错误并在主 class 中捕获它,如下所示:
public class SomeClass {
int[] table;
int size;
public SomeClass(int size) throws NegativeArraySizeException{
this.size = size;
table = new int[size];
}
public static void main(String[] args) {
int[] sizes = {5, 3, -2, 2, 6, -4};
SomeClass testInst;
for (int i = 0; i < 6; i++) {
try {
testInst = new SomeClass(sizes[i]);
System.out.println("New example size " + testInst.size);
}
catch (NegativeArraySizeException err) {
System.out.println(err.toString());
}
}
}
}
输出将是