基本介绍
1、Java语言中,将程序执行中发生的不正常情况称为异常,但是开发过程中的语法错误和逻辑错误不是异常
2、执行过程中所发生的异常事件分为两大类
Error:java虚拟机无法解决的严重错误,jvm系统内部错误、资源耗尽,比如:栈溢出(StackOverflowError)和OOM,error是严重错误,程序会崩溃
Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。比如空指针异常,连接超时等
异常处理类型
编译异常的特点:编译时就需要捕获该异常,否则报编译错误,称为受检异常
SQLException:操作数据库时,查询表可能发生异常
IOException:操作文件时,发生的异常
FileNotFoundException:当操作一个不存在的文件时,发生异常
ClassNotException:加载类,该类不存在时,发生异常
EOFException:操作文件到文件末尾,发生异常
IllegalArguementException:参数异常
运行异常的特点:可以不捕获异常,也不报编译错误,称为非受检异常
Java源程序用javac.exe编译成字节码文件过程中可能出现编译异常,而运行异常是在字节码文件用java.exe在内存中加载、运行类可能出现的异常就是运行异常,运行时异常,编译器不要求强制处理异常,因为这类异常很普遍,全处理的话会对程序的可读性和运行效率产生影响;编译异常是编译器必须处置的异常
异常处理方式
五个关键字
try-catch-finally
try{
//将可能有异常的代码放入
}catch(Exception e){
//捕获到异常
//当异常发生时,系统将异常封装成Exception对象e,传递给catch
//得到异常对象后,程序员自己处理
}finally{
//不管异常是否发生,都会执行的操作。一般是释放资源的代码
}
try-catch
如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch里面
如果异常没有发生,则顺序执行try的代码模块,不会进入到catch
如果希望异常不论是否发生,都执行某段代码,就使用finally代码模块