java之异常——Exception
代码运行中出现非正常性情况
1.编译时异常,比如少个分号结尾,比如调用的模块没有引入或者找不到
2.运行时异常,比如索引越界
常见的异常有空指针异常,是因为拿了一个空对象去操作,java中不允许操作空对象
异常可以直接抛出异常,也可以捕获异常,捕获异常中还有多重捕获
注意:
1.如果某个方法中抛出了异常,其他方法在调用这个抛出异常的方法时,也需要抛出异常,因为下层的方法抛出的异常会传给上层的调用者
2.finally关键字,一般是加在try{}catch{}代码块后面,无论是否发生异常,finally代码块中的代码都会被执行,finally代码块中的代码一般是用来做回收资源等收尾的工作
任何执行try 或者catch中的return语句之前,都会先执行finally语句
获取异常信息常用方法
1.getMessage() :获取详细的异常描述信息
2.printStackTrace() :打印异常发生时的方法调用栈信息
package com.test01;
import java.io.*;
import java.util.Properties;
import java.util.zip.InflaterInputStream;
public class exceptionDemo {
//throws IOException 这是抛出IOException异常,除了抛出异常,我们还可以捕获异常
public static void main(String[] args) throws IOException {
//根据文件路径创建文件对象
File file = new File("src/main/resources/log4j.properties");
//Properties类是专门用来解析Properties文件的
Properties properties = new Properties();
//除了直接抛出异常,还可以捕获异常,并处理异常或输入信息,art+ctrl+t 快捷键
try {
//准备一个输入流对象 ,将文件对象放到这个字节流对象中来,字节流对象是放在properties调用的load方法中
InputStream inputStream = new FileInputStream(file);
//调用load方法,从输入流中加载数据到对象中
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
//获取详细的异常描述信息
System.out.println(e.getMessage());
//打印异常发生时的方法调用栈信息
e.printStackTrace();
}
}
}
package com.test01; import java.util.ArrayList; import java.util.List; public class exceptionDemo2 { public static void main(String[] args) { List<String> lists = new ArrayList<String>(); try { lists.add("黄超"); lists.add("大鹏"); System.out.println(lists.get(3)); //会报IndexOutOfBoundsException } catch (Exception e) { System.out.println("索引错误"); //控制台输出索引错误 } } }