第五章异常

一选择题1—5AAADC
二简答题
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对象操作、类型转换异常。

5修改第三题使用log4j记录日志在jbit.log文件中记录产生的异常信息
package cn.jbit.log;

import org.apache.log4j.Logger;

/**

  • 使用log4j记录日志。
  • @author 北大青鸟
    */
    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.根据编号输出课程名称
    package cn.jbit.exception;

import java.util.Scanner;

/**

  • 测试try-catch-finally的使用。
    */
    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使用throw抛出异常
package cn.jbit.exception;

/**
 * 使用throw在方法内抛出异常。
 */
public class Person {
	private String name = "";// 姓名
	private int age = 0;// 年龄
	private String sex = "男";// 性别
	/**
	 * 设置性别。
	 * @param sex 性别
	 * @throws Exception
	 */
	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 + "岁)");
	}
}
package cn.jbit.exception;


/**
 * 捕获throw抛出的异常。
 */
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使用log4j输出日志到控制台
输出package cn.jbit.log;

import java.util.Scanner;
import org.apache.log4j.Logger;
/**

  • 使用log4j输出异常信息到控制台。
    */
    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使用log4j输出日志到文件
    package cn.jbit.log;

import java.util.InputMismatchException;
import java.util.Scanner;
import org.apache.log4j.Logger;
/**

  • 记录日志到文件。
    */
    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、付费专栏及课程。

余额充值