java异常简介:
Java异常是Java提供的一种识别及响应错误的一致性机制。
1.java异常的理解
在企业级系统中即使有再多的再优秀的工程师也无法避免在系统运行过程中出现不可预知的异常,如果不及时处理出现的异常就会是程序运行中断。在处理异常过程中我们我们需要解决3个问题
3.1哪里发生异常?
3.2谁来处理异常?
3.3如何处理异常?
这三个问题就是异常的核心部分,下面的内容将为大家捷信这些问题。
2. 哪里发生异常
异常捕获时需要分清稳定的代码和不稳定的代码。
什么是稳定代码? 比如 int a=10;
什么是不稳定代码?比如操作字符串可能会发生NullPointerException
操作数据库时会发生SQLException。
在异常处理中我们首先需要定位到异常会出现的位置,这样才可以正确的异常,之后对异常进行相应的处理。
3.谁来处理异常和如何处理异常
public class test {
public static void main(String[] args) {
String str=null;
//定义常量不要写在try的代码块中,因为它属于稳定代码
int length;
//写在try代码块中的如果出现异常会被catch捕获
try{
length = str.length();
}catch (Exception e){
//catch中可以对捕获到的异常进行处理
System.out.println("异常类型{}"+e);
length=0;
}finally {
System.out.println("我被执行了");
}
System.out.println(length);
}
}
上面的代码是一个简单的实例,从代码可以看出来我们需要把不稳定的代码(会出现异常的代码)放入到try代码块中,当执行str.length()方法时,会出现空指针异常(NullPointerException)之后代码走到catch代码块中,之后会执行代码块中的代码,finally的意义在于不管发不发生异常都会运行代码块中的代码。
下面是代码运行的结果
异常类型{}java.lang.NullPointerException
我被执行了
0
Process finished with exit code 0
4.异常的分类
上图是异常的分类
Error: 是程序不可自行恢复的需要人工介入,比如服务器down机,断电…等等
Exception: 又分为checked(受检异常)和unchecked(非受检异常)
受检异常是程序在编译时就会报错的异常,而非受检异常是在程序运行期会出现的所以uncheck都继承RuntimeExcrption。
5.注意事项
5.1 finally不执行的原因:
- 5.1.1 程序没进入try代码块
- 5.1.2 在finally代码前面执行了 return。
5.2 不要再try代码块中写稳定代码,这样写没有任何意义。