java面向对象第五章

选择题
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("感谢使用本程序!");
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值