您的位置:首页 > 编程语言 > Java开发

Java 异常

2016-03-30 23:16 330 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: