本人感觉try..catch..finally,有点像 switch..case:break..default,只不过前者是用来捕获Exception的
以下为本人做的一个小的例子,可运行后观查执行效果
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类库中提供的异常种类: