异常
java的异常主要依靠try, catch, finally, throw, throws五个关键字。
捕获异常的时候记得要先捕获小异常,再捕获大异常
finally
当java程序在try块或catch块遇到return或throw语句时,说明方法已经执行结束,这时方法先不返回,而是
看代码中是否含有finally块,如果没有,则直接返回return或throw语句中的内容,结束方法。如果有,则先
执行finally块中的方法,再返回try或catch块中执行return 或 throw语句。但是如果finally块中含有
return或者throw语句,则直接会在finally语句中结束方法,不会在返回try或者catch块中任何代码。
增强型自动关闭资源的try语句
public class AutoCloseTest {
public static void main(String[] args) throws IOException {
try(
BufferedReader br = new BufferedReader(new FileReader("text.java"));
PrintStream ps = new PrintStream(new FileOutputStream("a.txt"))){
System.out.println(br.readLine());
ps.println("lalla");
}
}
}
try关键字后面紧跟一对括号,括号可以声明。初始化一个或多个资源,此处的资源必须是那些程序结束时需要
显示关闭的资源(比如说:数据库连接,网络连接等)
try语句在该语句结束时自动关闭这些资源。
且资源实现类必须实现AuthCloseable或Closeable接口,实现着两个接口就必须实现close()方法
throws
使用throws声明抛出异常,一般是当前不知道如何处理该异常,应有上一级调用者处理。
常用的异常
-
RuntimeExcetpion
java.lang.ArrayIndexOutOfBoundsException:数组越界
java.lang.AirthmeticException: 算数条件异常(÷0)
java.lang.NullPointerException:空指针异常
java.lang.ClassNotFoundException:找不到类异常
java.lang.NegativeArraySizeException:数组长度为负异常
java.lang.ArrayStoryException:数组长包含不兼容的值抛出异常
java.lang.SecurityException:安全性异常
java.lang.IllegalArgumentException:非法参数异常
-
IOExcetption
IOException:操作输入流和输出流出现的异常
EOFException:文件已结束异常
FileNotFoundException:文件未找到异常
-
其他
ClassCastException:类型转换异常
ArrayStorException:数组中包含不兼容的值
SQLException:数据库操作异常类
NoSuchFieldException:字段未找到
NoSuchMethodException:方法未找到
NumberFormatException:字符串转换为数字抛出的异常
StringIndexOutOfBoundException:字符串索引超出范围抛出的异常
IllegalAccessException:不允许访问某类
InstantiationException:当时图使用Class类中newInstance()方法创建一个累的实例,而指定
的类对象无法被实例化