java 异常处理机制
Error 和Excetion 都是继承于Throwable
Error
是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。
Exception
CheckedException 普通异常 (可检查)
是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。
RuntimeException 运行时异常 (不可检查异常)
都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
最常见的RuntimeException
NullPointerException 空指针异常
ClassNotFoundException 指定的类未找到
NumberFormatException 字符串转换数字异常
IndexOutOfBoundsException 数组角标越界
IllegalArgumentException 方法传递参数错误
ClassCastException 数据类型转换异常
NoClassDefFoundException 未找到类定义错误
SQLException SQL 数据库操作错误
InstantiationException 实例化异常
NoSuchMethodException 方法不存在异常
throw 和 throws的区别
throw
1.用在方法体内,表示抛出异常.
...
throw new Exception("测试出错了!");
...
2.throw是具体向外抛出异常的动作,所以他抛出的是一个异常实例,并且肯定抛出了某种异常
throws
1.throws用在方法声明后面,表示如果抛出异常,由该方法的调用者进行异常的处理.
2.throws主要是声明这个方法会抛出某种类型 的异常,让它使用者知道需捕获主要是声明这个方法会抛出某种类型 的异常.
3.throws 表示出现异常的一种可能性,并不一定会发生这种异常.
catch finally执行原则
例子
public class ExceptionTest {
public static void main(String[] args) {
System.out.println(getNum());
}
public static int getNum() {
try {
int a = 1 / 0;
return 1;
} catch (Exception e) {
System.out.println("catch is called "+e.toString());
return 2;
} finally {
System.out.println("finally is called");
return 3;
}
}
}
执行结果
catch is called java.lang.ArithmeticException: / by zero
finally is called
3
原则: catch 遇到 return 或者 异常使得该函数终止的话,有finally就必须执行 finally 代码再返回值;但是finally里面有return 语句,这个时候方法就结束了,因此返回结果是3;如果finally只是资源释放的话 ,最终结果就是2。
上一篇: MAC系统下 Flutter 环境配置
推荐阅读
-
Java 异常处理机制
-
Java异常处理机制
-
java 异常处理机制
-
Java异常处理机制
-
java异常处理机制
-
java异常处理的(try catch或throws): 博客分类: Java EE java
-
java异常处理的(try catch或throws): 博客分类: Java EE java
-
在CDH3上运行mahout的random forest算法时的异常处理 博客分类: mahout
-
在CDH3上运行mahout的random forest算法时的异常处理 博客分类: mahout
-
Tomcat7-Tomcat8的manager配置以及在idea下的异常表现 博客分类: Java_about