package com.example.demo.exceptionTest;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * @Description throws和throw的使用
 *      throws:用于在方法上声明式的抛出异常
 *      throw:用于在代码中手动的抛出异常(throw new xxxException())
 *
 * @Auther gf.x
 * @Date 2020/4/7 17:16
 */
public class ThrowsAndThrow {
    public static void main(String[] args) {

        String s = null;
        try {
            //方法直接抛出异常,这里就会报错提示:Unhandled exception: java.io.FileNotFoundException
            s = new ThrowsAndThrow().openFile(); //方法抛出了两个异常,此处就需要处理两个异常
        } catch (FileNotFoundException e) { //catch FileNotFoundException
            e.printStackTrace();
        } catch (IOException e) { //catch IOException
            e.printStackTrace();
        }
        System.out.println(s);
    }

    //如果方法这里直接向上抛出,那调用它的地方就可能会抛出异常,这就需要在调用它的地方来处理这个异常
    String openFile() throws FileNotFoundException, IOException { //方法上抛出了两个异常,那调用方同样也需要处理这两个异常
        FileReader fileReader = new FileReader("E:/test/child/a.txt"); //FileNotFoundException
        char c = (char) fileReader.read(); //IOException
        System.out.println(c);
        return "" + c;
    }
}