try-catch-finally简介
try{} //try块:用于捕获异常
catch(异常类型 ex){} //catch块:用于处理try捕获到的异常
finally{} //finally块:无论是否发生异常,代码总能执行
- try块后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块
使用多重catch结构处理异常
public class TryDemoOne {
public static void main(String[] args) {
/* // 要求:定义两个整数,输出两数之商
int one=12;
int two=2;
System.out.println("one和two的商是:"+ (one/two));
*/
// 要求:定义两个整数,接受用户的键盘输入,输出两数之商
Scanner input=new Scanner(System.in);
System.out.println("=====运算开始=====");
try{
System.out.print("请输入第一个整数:");
int one=input.nextInt();
System.out.print("请输入第二个整数:");
int two=input.nextInt();
System.out.println("one和two的商是:"+ (one/two));
}catch(ArithmeticException e){
System.exit(1);//括号里的数字不为零时都将终止程序运行
System.out.println("除数不允许为零");
e.printStackTrace();//用于跟踪异常事件发生时执行堆栈的内容
}catch(InputMismatchException e){
System.out.println("请输入整数");
e.printStackTrace();
}catch(Exception e){
System.out.println("出错啦~~");
e.printStackTrace();
}finally{
System.out.println("=====运算结束=====");
}
}
}
return关键字在异常处理中的作用
public class TryDemoTwo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int result=test();
System.out.println("one和two的商是:"+ result);
}
public static int test(){
Scanner input=new Scanner(System.in);
System.out.println("=====运算开始=====");
try{
System.out.print("请输入第一个整数:");
int one=input.nextInt();
System.out.print("请输入第二个整数:");
int two=input.nextInt();
return one/two;
}catch(ArithmeticException e){
System.out.println("除数不允许为零");
return 0;
}finally{
System.out.println("=====运算结束=====");
return -100000;//在finally块中使用return,将始终带回finally块中return的值
}
}
}