处理异常方式-try_catch_finally

如何处理 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 {
            // 一定会执行的代码
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/afangfang/p/12580160.html