如何处理 Exception 的异常:
package com.aff.excep; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.junit.Test; /* 处理Exception的异常 java提供的异常处理的抓抛模型: 1. "抛" 执行代码,出现异常,就会在异常的代码处生成一个对应异常的类的对象, 并将此对象抛出 一旦抛出此异常的对象, 那么程序就终止运行,此异常的对象抛给方法的调用者 2. "抓" 抓住上一步抛出来的异常类的对象。 异常处理的方式: java提供了两种方式用来处理一个异常类的对象 处理方式一:try{ //可能出现异常的代码 }catch(Exception e1){ //处理的方式1 }catch(Exception e2){ // 处理的方式2 } finally{ //一定执行的代码 } 注:1.try内生命的变量, 类似于局部变量。出了try{ }语句,就不能被调用 2.finally是可选的。 3.catch语句内部是对异常对象的处理 getMessage(); printStackTrace(); 4.可以有多个actch语句,try中抛出的异常类对象从上往下匹配catch中的异常类的类型, 一旦满足,就执行catch中的代码,执行完,就跳出其后的多条catch语句 5.如果异常处理了,其后面的代码可以执行了 6.若catch 中多个异常类型是 "并列" 关系,谁上谁下都可以 若catch中多个异常类型的 "包含" 关系,须将子类放在父类的上面,进行处理,否则报错 7.finally 中存放的一定是会被执行的代码,不管try中,catch中是否有异常未被处理,以及是否有return 8.try- catch是可以嵌套的 对于运行时异常来说,可以不显式的进行处理, 对于编译时异常来说,必须要显式的进行处理 */ public class TestException1 { @Test public void test6() { FileInputStream fis = null; try { fis = new FileInputStream(new File("heel.txt")); int b; while ((b = fis.read()) != -1) { System.out.println((char) b); } } catch (FileNotFoundException e1) {// e1相当于局部变量, 下面的exception也可以使用e1 // System.out.println(e1.getMessage()); System.out.println("找不到文件"); } catch (IOException e1) { System.out.println(e1.getMessage()); } finally { // 一定会执行的代码 try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } @Test public void test2() { try { int[] i = new int[10]; // System.out.println(i[10]); System.out.println(i[-10]); } catch (Exception e) { // e.printStackTrace(); System.out.println("出现异常"); // System.out.println(e.getMessage()); } finally { // 一定会执行的代码 } } }