JVM——java的异常处理机制

java的异常处理机制

异常指的是成勋运行时所发生的非正常情况或者错误,JVM会将错误表示为一个异常并抛出。这个异常可以在catch代码块中进行捕获,然后处理。

Java中定义了一个Throwable作为所有异常的基类。Throwable下面有两个重要的子类Error和Exception。
JVM——java的异常处理机制
1、Error(错误)

例如:OutOfMemoryError、ThreadDeath

JVM层次的严重错误,一般会导致程序中止执行。一般来说,一个正常的程序是不应该存在Error错误的。

2、Exception(可恢复的异常,编译器可以捕捉到)
分为检查异常(checked exception)和运行时异常(running exception)。

(1)检查异常(checked exception)
例如:IOException

此类异常通常发生在编译阶段,java编译器会强制程序去捕获这类异常,即把异常代码写到try块中,把对异常处理的代码写到catch块中。

这种检查异常一般在以下几种情况下使用:
(i)异常的发生一般不会导致程序出错,进行处理后可以继续执行后面的操作。例如连接数据库失败之后,可以重新连接后进行后续操作;
(ii)程序依赖于不可靠的外部条件,比如IO资源。

(2)运行时异常(running exception)

例如:NullPointException(空指针异常)、ClassCastException(类型转换异常)、ArrayIdexOutOfBoundsException(数组越界异常)、BufferOverflowException(缓存区溢出异常)、ArithmeticException(算术异常)等。

此类异常不同于检查异常,编译器不会强制进行捕获处理。一般是由于代码不规范导致的,可以通过规范代码来避免这种异常。

异常处理时,应当注意的问题?

(1)java异常处理用到了多态的概念,进行异常捕获的时候,需要先捕获子类,再捕获基类的基本信息。

(2)尽早抛出异常,并对异常进行处理,或者从错误中恢复,使程序继续执行。

(3)可以自定义异常类,这些自定义异常类只要继承自Exception类即可。

(4)异常能处理就处理,不能处理的话就抛出。