java异常处理目的在于通过使用少于目前数量的代码来简化大型、可靠的程序的生成。Java中Throwable
类是所有异常或错误的超类,它的两个子类Error
表示编译时和系统错误,Exception
表示可以被抛出和处理的异常。一般来说我们只关心Exception
类,它的子类可以分为两类:
- 一般异常(
checkedException
)
主要指SQL、IO异常,对于这种异常JVM会强制我们对其进行catch
处理。
- 运行时异常(
runtimeException
)
这类异常JVM会自动地抛出来,不需要我们手动去检查,如果写了代码反而会混乱。
处理异常可以使用try...catch
语句,try
用来指定可能会发生异常的程序代码,catch
用来捕获异常,如果发生了异常,那么后面的代码将不会执行,但假设存在finally
,不管发生没发生异常,finally
代码块都会被执行(注意:如果在try
语句前有返回点,则finally
代码块不会被执行;在try
块或catch
块中有System.exit(0)
这种语句,finally
也不会执行,因为JVM都被停止运行了。)。如果try...catch
中有return
,它不会影响finally
,在执行return
的时候只是把return
后面的值复制一份到返回变量中。可以使用throw
明确抛出一个异常,throws
用来表明一个方法可能抛出的各种异常。
java中可以使用assert
(断言)进行开发的调试,assert
后面跟一个布尔值的表达式,如果为false
说明程序已经错误了,会抛出一个AssertionException
,如果assert
后面有“:”和表达式,则表示当条件为假时,将表达式的值传入到AssertionException
的构造函数中。