java异常

java异常分为两类

  • 运行时异常
  • 编译异常

异常处理机制

  • 抛出异常
    • 抛出异常后,代码终止执行
    • 不处理这个异常,抛出去,让其他人去处理
    • 在方法签名上生成 throws 语句
    • 抛出的异常传递给上一级调用者
    • 可以在方法中认为抛出异常,使用throw
  • 捕获异常
    • 捕获异常后,代码还能继续运行
package com.zhuchun.stu;


import java.io.*;
import java.util.Properties;


/**
* @Project:cicpx-autotest
* @Description:
* @Auther: zhuchun92@163.com
* @Date: 2020年03月25日 21:19
*/
public class TestTryCatch {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        String path = "src/main/resources/log4j.properties";
        String path2 = "src/main/resources/log4j.propertie";
        loadProperties(path);
        loadProperties2(path2);
    }


    public static void loadProperties(String filepath) throws IOException, ClassNotFoundException {
        File file = new File(filepath);
        InputStream inStream = new FileInputStream(file);
        Properties properties = new Properties();
        properties.load(inStream);
        System.out.println(properties.getProperty("log4j.appender.File"));
//        throw new ClassNotFoundException();
    }
    public static void loadProperties2(String filepath) {
        File file = new File(filepath);
        InputStream inStream = null;
        try {   // try 代码块
            inStream = new FileInputStream(file);   // 可能会报异常的语句
        } catch (FileNotFoundException e) {     // 需要捕获的异常类型
            // catch代码块,捕获异常后,需要做的后续操作
//            e.printStackTrace();
            System.out.println("文件没找到哦!");
        }
        Properties properties = new Properties();
        // 多重捕获异常
        try {
            properties.load(inStream);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NullPointerException e){
            System.out.println("空指针咯!");
        } finally {
            // finally 代码块,可以做些资源回收等工作
            // 无论是否发生异常,finally代码块都会被执行
            try {
                inStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }
        System.out.println(properties.getProperty("log4j.appender.File"));
//        try {
//            throw new ClassNotFoundException();
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }
    }
}