异常指程序在运行时,发生的不被期望的事件,它阻止了程序按照预期正常执行流程。在开发中非常容易出现异常破坏系统的稳定性,在Java中提供了非常强大的异常处理机制,Java中异常处理相关的关键字如下:
- try**:**用于监听可能会发生的异常。在开发中一般我们会将可能会出现异常的代码放入try语句内,try和catch语句都是成对出现的,当try的代码发生异常时,catch就能捕获到所发生的异常。要么只会执行try,要么只会执行catch,try和catch不可能都执行。
- catch**:**用于捕获异常。catch用于捕获try代码块中发生的异常。
- finally**:**finally语句块总是会被执行。无论程序是否进入try还是进入catch,finally中的代码都会执行。在finally一般用于资源回收(数据库连接的关闭)。只有finally执行完成,程序才会执行try或catch的return语句或throw语句
- throw**:**用于抛出异常。
- throws**:**用于声明方法可能会出现的异常,如果在方法上声明了可能会抛出的异常,则表示方法中的代码不需要强制性异常处理,如果出现了异常,程序会交由JVM处理,此时会造成程序中断执行。
1.Java异常的分类
Java中的异常大致可分为如下3种:
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常:在运行期间可能会发生的异常,例如空指针异常、类转换异常等等,运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。