java 运行时异常与非运行时异常理解

所谓的异常就是阻止当前程序或方法继续执行的问题。

java异常分为两种: 运行时异常(RuntimeException)非运行时异常(CheckedException)也叫检查式异常。

1.运行时异常是不需要捕获的,程序员可以不去处理,当异常出现时,虚拟机会处理。常见的运行时异常有空指针异常。

我们常见的5中运行时异常:
ClassCastException(类转换异常) 
IndexOutOfBoundsException(数组越界) 
NullPointerException(空指针) 
ArrayStoreException(数据存储异常,操作数组时类型不一致) 
还有IO操作的BufferOverflowException异常 

具体可以参见java的API: http://docs.oracle.com/javase/7/docs/api/

2.非运行时异常就必须得捕获了,否则编译不过去,java编译器要求程序员必须对这种异常进行catch,Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。

常见的非运行异常有io异常和sql异常。
IOException、FileNotFoundExcetion 和SQLException

finally是异常处理工作的一部分,表示总是执行。一般finally写的代码语句就是流的关闭。也就是做了一项清理,工作清理工作对于我们来说是必不可少的,因为如果一些消耗资源的操作,比如IO,JDBC。如果我们用完以后没有及时正确的关闭,那后果会很严重,这意味着内存泄露。(有人说过,对于资源的及时正确的清理是程序员的基本素质之一)

另外不得不说异常处理中的throws和throw的区别了。

1、throws出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型
2、throw出现在方法体中,用于抛出异常。当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。


猜你喜欢

转载自forlan.iteye.com/blog/2194970