选择题
1-5 A A AB C
简答题
1请指出下列Java代码错误
答:使用多重 catch 语句时,异常子类一定要位于异常父类之前。应把catch(Exception e)放在最后一个catch块。
2请给出下面这段程序的执行结果并说明原因
答:运行结果:234
原因:进入if语句—〉抛出异常——〉进入catch—〉输出2----〉进入finally—>输出3—〉执行剩余代码—〉输出4
3编写能产生ArraylndexOutOfBoundsException异常代码并将其捕获在控制台输出异常信息
package cn.jbit.homework;
public class ArrayIndexExceptionTest {
public static void main(String[] args) {
try{
int[] arr ={20,35,66,99,88};
for(int i=0;i<=arr.length;i++)
System.out.println(arr[i]);
}catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组长度越界! ");
}
4简述java异常使用体系结构
Error类:表示仅靠程序本身无法恢复的严重错误,Exception类:由Java应用程序抛出和处理的非严重错误,如所需文件找不到、网络连接不通或中断、算术运算出错、数组下标越界、装载一个不存在的类、对null对象操作、类型转换异常。
public class ArrayIndexExceptionLog {
private static Logger logger=Logger.getLogger(ArrayIndexExceptionLog.class.getName());
public static void main(String[] args) {
try{
int[] arr ={20,35,66,99,88};
for(int i=0;i<=arr.length;i++){
System.out.println(arr[i]);
logger.debug("输出:" + arr[i]);
}
}catch (ArrayIndexOutOfBoundsException e) {
logger.error("数组长度越界!", e);
}
}
}
练习1
public class TestException1 {
public static void main(String[] args) {
System.out.print(“请输入课程代号(1~3之间的数字):”);
Scanner in = new Scanner(System.in);
try {
int courseCode = in.nextInt();
switch (courseCode) {
case 1:
System.out.println(“C#编程”);
break;
case 2:
System.out.println(“Java编程”);
break;
case 3:
System.out.println(“SQL基础”);
}
} catch (Exception ex) {
System.out.println(“输入不为数字!”);
ex.printStackTrace();
} finally {
System.out.println(“欢迎提出建议!”);
}
}
}
练习2
public class Person {
private String name = "";// 姓名
private int age = 0;// 年龄
private String sex = "男";// 性别
public void setSex(String sex) throws Exception {
if ("男".equals(sex) || "女".equals(sex))
this.sex = sex;
else {
throw new Exception("性别必须是“男”或者“女”!");
}
}
public void setAge(int age) throws Exception {
if (age>=1 && age<=100)
this.age = age;
else {
throw new Exception("年龄必须在1到100之间!");
}
}
public void print() {
System.out.println(this.name + "(" + this.sex
+ "," + this.age + "岁)");
}
public class TestException2{
public static void main(String[] args) {
Person person = new Person();
try {
person.setAge(110);
person.print();
} catch (Exception e) {
e.printStackTrace();
}
}
}
练习3
public class TestLog1{
private static Logger logger=
Logger.getLogger(TestLog1.class.getName());
public static void main(String[] args) {
try {
Scanner in = new Scanner(System.in);
System.out.print(“请输入被除数:”);
int num1 = in.nextInt();
System.out.print(“请输入除数:”);
int num2 = in.nextInt();
System.out.println(String.format("%d / %d = %d",
num1, num2, num1/ num2));
} catch (Exception e) {
logger.error(“出现异常”,e);
} finally {
System.out.println(“感谢使用本程序!”);
}
}
练习4
public class TestLog2 {
private static Logger logger = Logger.getLogger(TestLog2.class.getName());
public static void main(String[] args) {
try {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(String.format("%d / %d = %d", num1, num2, num1
/ num2));
logger.info(String.format("%d / %d = %d", num1, num2, num1
/ num2));
} catch (InputMismatchException e) {
logger.error("被除数和除数必须是整数。");
} catch (ArithmeticException e) {
logger.warn("除数不能为零。");
} catch (Exception e) {
logger.error("其他异常",e);
} finally {
System.out.println("感谢使用本程序!");
}
}
}