Java 异常

来源:互联网 发布:构建医疗数据集成平台 编辑:程序博客网 时间:2024/06/05 16:35

Java 异常

学习这件事永远是件苦差事。

理解一个新的概念、名词,大概是一个消除误解的过程,所以最好将固有的,先入为主的理解全部去掉。
大学时,老师曾经问过一个问题:异常和错误有什么区别。这个问题使得我产生了一个错误的概念,异常不是错误。
异常
正确的理解应该是:异常就是错误,不同的异常(这里指异常的根类throwable),只是在不同条件下发生的不同的错误,处理方式也就不同。或者专业一点说法:异常分为异常和错误。就像国企和央企一样,国企分为国企和央企。

Throwable分为两种Excepition和Error。

throwable分为可检查异常和不可检查异常。Error是不可检查异常。
这个“检查”是指的编译在编译阶段的检查,(也就是eclipse会提示的错误)

Error是一种什么错误呢?首先这种异常和我们程序无关,和我们的代码无关,和是jvm的有关,栈溢出、内存溢出。StackOverFlowError、OutOfMemoryError。举个例子:我们的Java程序正在正常的运行,由于服务器的某个进程突然占用了很多的内存(原因很多,比如病毒),导致我们的Java程序内存不够,程序死掉。这类异常不是我们所能控制的,当然我们也就不需要处理。可以认为是jvm的错误。

Exception也是一种错误,不过这种错误我们的程序就可以处理了。
Exception 分为运行时异常(RuntimeException)和非运行时异常。
RuntimeException 是不可检查异常,如空指针异常和下标越界异常
这些异常是程序逻辑错误导致的。可以处理也可以不处理,处理的方式就是捕获或者抛出。

非运行时异常,比如IOException、SQLException这些异常属于编译异常,必须代码中处理(捕获或者抛出),否则编译不通过。
异常先被抛出,后被捕获。(就按照字面理解就好,不抛出,怎么捕获;对同一个异常已经捕获了,怎么能又抛出呢。)
代码中处理异常的格式就是 try catch finally 。具体使用略。
参考博客:
http://www.importnew.com/14688.html#comment-483170

0 0
原创粉丝点击