第2节 使用try...catch...finally实现异常处理
处理异常:
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}finally{
//最终将要执行的一些代码,例如关闭连接等善后工作
}
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}catch(Exception2 e){
//处理Exception2的代码块
}...(n个catch块)...{
}
finally{
//最终将要执行的一些代码,例如关闭连接等善后工作
}
首先,抛出异常的方法会终止执行
然后,程序的控制权将移交给catch块中的异常处理程序
catch块中根据不同的情景给出处理
try{
System.out.print("请输入你的年龄:");
Scanner input=new Scanner(System.in);
int age=input.nextInt();
System.out.println("十年后你"+(age+10)+"岁");
} catch(InputMismatchException e){
System.out.println("你应该输入整数!!!");
}
System.out.println("程序结束啦");
如果try中的方法抛出很多种类型的异常怎么办?
用多重catch块的方法。如下:如果第一个数输入的是非整数类型,由第一个catch块捕获并处理;如果输入的是2和0,就会被第二个catch块捕获并处理。
Scanner input=new Scanner(System.in);
try{
System.out.print("请输入第一个数:");
int one=input.nextInt();
System.out.print("请输入第二个数:");
int two=input.nextInt();
System.out.println("两数相除结果为:"+one/two);
} catch(InputMismatchException e){
System.out.println("你应该输入整数!!!");
} catch(ArithmeticException e){
System.out.println("除数不能为0");
} catch(Exception e){
System.out.println("我是不知名异常"):
}
System.out.println("程序结束啦");
注意:顺序问题——先子类后父类的顺序编写多重catch语句