他们具有一个共同的父类 Throwable
而 Throwable 有两个子类继承了此类,一个为error 一个为Exception
error的错误级别是 虚拟机级别的 也就是我们是无法进行处理的 所以探讨的异常处理只针对于Exception的子类。
java的异常分为运行时异常和编译时异常
常见的运行时异常包括 NullofPointException ArrayofIndexException 和ClassCaseException
编译时异常常见的有 IO的异常 SQL的异常
自定义异常:
如果你想自定义一个异常类,有两个情况,
1:如果定义的是一个编译时异常类, 那么他需要继承于Exception类
2:如果定义的是一个运行时异常类,那么它需要继承自RunTimeException类
Try Catch Throw 和Throws 和差别
try catch 是作用于代码块的 是自己解决 如果catch 能够抓住(类型匹配)这个异常。那么程序不会崩溃,可以继续执行之后的代码, Throws是 作用于方法的,如果一个方法的后面跟着一个Throws 那就代表这个方法可能会抛出后面的一些异常,而throw 是用来抛出一个实际的new出来的异常,就像形式参数 和实际参数一样的差别。
并且throws是将异常定义,如果谁 调用此方法 必须提供解决的方案, 如果最终调用此方法的是main 且main也并不做处理 而是继续选择throws 那么就会抛给虚拟机,虚拟机的处理方式就是 打印出错误 并终止代码。
关于return 和finally的
不管有多少个return finally总是会在try catch finally三连的终止前运行,
如果想让finally不运行,当然 这是没必要的, 可以在前面执行的代码中执行System.exit(0):
退出虚拟机。
网友评论