内容正文:
课题五 Java处理输入输出及异常处理方法
任务10 处理数据输入的错误
任务引入:一个遗留问题
任务9的输入格式问题
中断
本次课要求处理上图中出现的异常
知识准备——了解异常类
所有异常类型都是
内置类Throwable的子类
用于Java运行时系统
来显示与运行时系
统本身有关的错误
用于用户程序可能
捕获的异常,也是用来创建用户异常类型子类的类。
Error类对象由Java虚拟机生成并抛出;
Exception类对象由应用程序处理或抛出。
知识准备——了解异常类
异常 说明
RuntimeException java.lang包中多数异常的基类
ArithmeticException 算术错误,如除以 0
IllegalArgumentException 方法收到非法参数
ArrayIndexOutOfBoundsException 数组下标出界
NullPointerException 试图访问 null 对象引用
SecurityException 试图违反安全性
ClassNotFoundException 不能加载请求的类
知识准备——了解异常类
异常 说明
AWTException AWT 中的异常
IOException I/O 异常的根类
FileNotFoundException 不能找到文件
EOFException 文件结束
IllegalAccessException 对类的访问被拒绝
NoSuchMethodException 请求的方法不存在
InterruptedException 线程中断
知识准备——异常处理模型
由五个关键字 try、catch、throw、throws 和 finally 处理。
Java 中可用于处理异常的两种方式:
自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。
回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理。
课堂演示:try - catch 处理异常
public class ExceptionDemo {
public static void main(String args[]) {
try {
int c= calculate(9,0);
System.out.println(c);
}
catch (Exception e) {
System.err.println("发生异常: " + e.toString());
e.printStackTrace();
}
}
static int calculate(int a, int b) {
int c = a/b; return c;
}
}
调用函数calculate,
将引发一个异常
在catch块中处理异常
输出
结果
课堂练习
完成教材代码10-1
知识准备:多个 catch 块
单个代码片段可能会引起多个错误。
可提供多个 catch 块分别处理各种异常类型。
. . .
try{ }
catch(ArrayIndexOutOfBoundsException e){ }
catch(Exception e) { }
...
ArrayIndexOutOfBoundsException类为 Exception 类的子类,但是如果异常
属于ArrayIndexOutOfBoundsException类将执行第一个 catch 块,之后控制
将转向try/catch块之后的语句
try {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println(“请输入第一个数”);
int num1=Integer.parseInt(br.readLine());
System.out.println(“请输入第二个数”);
int num2=Integer.parseInt(br.readLine());
result = calculate(num1,num2);
System.out.println(“结果是”+ result);
}
catch (NumberFormatException e) {
System.err.println("发生异常:必须输入整数");