Java异常简介
一、什么是异常?
在程序运行过程中,如果遇到一些意料之外的错误情况(比如除零、文件找不到、数组越界),程序就会抛出一个“异常”。
如果不处理,程序会直接终止。
如果处理,就能“优雅”地解决问题,不至于让整个程序崩掉。
二、受检异常和非受检异常
受检异常: 在 编译阶段 就会被编译器检查的方法调用,如果可能抛出这种异常,必须显式处理(要么 try-catch
,要么在方法签名上 throws
),否则无法通过编译。 例如:IOException
(文件读写出错)、SQLException
(数据库操作出错)、ClassNotFoundException
非受检异常: 包括所有 RuntimeException
及其子类,还有 Error
。编译器不会强制要求处理。 如NullPointerException
、ArrayIndexOutOfBoundsException
、ArithmeticException
(比如除零)、IllegalArgumentException
三、如何进行异常处理?
1、try-catch-finally
使用try-catch-finally
语句进行捕获处理异常。写在try
代码块中的代码是异常处理捕获的区域,如果这一区域抛出了异常,就会被捕获并进行处理,也就是执行catch
代码块中的代码,finally
代码块中的代码是无论是否捕获到异常,都会执行的代码。
2、throws
将当前未被处理的异常抛给调用者,如果依然没有被捕获,则继续抛出,直到抛出给JVM
导致程序中断。
对于受检异常,如果没有使用try-catch-finally
进行异常捕获,则需要进行throws
抛出异常,否则会编译报错