本人感觉try..catch..finally,有点像 switch..case:break..default,只不过前者是用来捕获Exception的
以下为本人做的一个小的例子,可运行后观查执行效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package net.form1; import java.util.InputMismatchException; public class Trycatch { public static void main(String[] args) { Trycatch trycatch = new Trycatch(); int result = trycatch.trycatchfinaly(); System.out.println(result); } public int trycatchfinaly(){ int num = 100; int divider = 10; try { while (divider > -1){ divider--; num = num + 100 / divider; //System.out.println(divider); } return divider; //无异常,则会返回divider的值 } catch (InputMismatchException e) { // InputMismatchException 输入类型错配的 System.out.println( "如果非数字异常会被打印" ); return -3; } catch (ArithmeticException e) { // ArithmeticException 算术错误 System.out.println( "算术错误会被打印" ); return -2; } catch (Exception e) { e.printStackTrace(); //打印堆栈信息 System.out.println( "发现异常情况!!" ); return -1; //如果有异常,则会返回-1 }finally{ System.out.println( "我是finally,num的值为:" + num); } /* * return语句执行到哪个语句块中,会返回哪个语句块中的return * Exception的检测是由子到父的 * finally不管是否有异常,最终都会运行finally语句块 * */ } } |
java类库中提供的异常种类: