内容正文:
8.2.1 try…catch…finally 语句捕获异常
异常的处理通常采用try、catch、finally 语句块。
1. try 语句块
try 语句块用于指定可能会产生异常的语句范围,也是为catch 规定异常捕获的语句范围。
语法格式如下:
try
{ 可能会产生异常的语句块;
}
8.2 异常处理
company profile
2. catch 语句块
catch 语句块用于指明需要捕获的异常事件的类型并给出相应的处理方法。
语法格式如下:
catch( 异常事件的类型对象名)
{// 给出处理的方法(代码);
}
3. finally 语句块
异常处理的最后一步是通过finally 语句块为异常处理提供一个统一的出口,以便在控制流转到程序的其他部分之前,对程序的状态进行统一的管理。不论在try 语句块中是否发生了异常事件,finally 语句块都会被执行。
8.1.2 异常处理机制
company profile
import java.util.InputMismatchException;
import java.util.Scanner;
public class myExecption {
public static void main(String args[]){
Scanner xin= new Scanner(System.in);
int a,b,c;
System.out.println(" 输入被除数和除数");
try{
a=xin.nextInt();
b=xin.nextInt();
c=a/b;
【实例3】 利用异常处理机制处理除数为0 的异常。
本实例将采用try…catch 模式处理除数为0 的异常,注意catch 语句块可以有多个,例如本实例在处理除数为0 的异常的同时,还处理了数据大小越界异常。
company profile
System.out.println(a+" 除以"+b+" 的商为"+c);
}
catch(ArithmeticException e){
System.out.println(" 发生运算错误,除数不能为0");
}
// 捕捉数据范围越界错误
catch(InputMismatchException e){
System.out.println(" 数据大小越界");
}
}
}
company profile
输入96 和6,输出“96 除以6 的商为16”。
输入96 和0,输出“发生运算错误,除数不能为0”。
输入999999999999(12 个9) 时,输出“数据大小越界”。
company profile
【运行结果:】
import java.util.Scanner;
public class myExecption {
public static void main(String args[]){
Scanner xin= new Scanner(System.in);
String[] fruit={" 苹果"," 桔子"," 香蕉"," 草莓"," 西瓜"," 葡萄"," 芒果"," 柠檬"," 鸭梨"," 桃子"};
System.out.println(" 请输入你喜欢的水果的序号");
for(int i=0;i<10;i++)
{
System.out.print((i+1)+ "--"+fruit[i]+ "\t");
if(i==4)System.out.println();
}
【实例4】 数组越界异常的捕获及处理。
company profile
System.out.println();
int love= xin.nextInt();
try{
System.out.println(" 你喜欢的水果是"+fruit[love-1]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println(" 请选择正确的序号");
}
finally{
System.out.println(" 你选到满意的水果了吗? ");
}
}
}
company profile
程序运行结果如下:
输入20,结果为:“请选择正确的序号”,“你选到满意的水果了吗? ”。
再次运行
输入5,结果为:“你喜欢的水果是西瓜”,“你选到满意的水果了吗? ”。
输入20,结果为:“请选择正确的序号”,“你选到满意的水果了吗? ”。
再次运行
输入5,结果为:“你喜欢的水果是西瓜”,“你选到满意的水果了吗? ”。
company profile
【运行结果:】
import java.util.InputMismatchException;
import