全球旧事资料 分类
Exceptio
javala
gArithmeticExceptio
ArrayI
dexOutOfBou
dsExceptio
:Javala
gObjectjavala
gThrowablejavala
gExceptio
javala
gRu
timeExceptio
javala
gI
dexOutOfBou
dsExceptio
javala
gArrayI
dexOutOfBou
dsExceptio
可以发现所有的异常处理类型最高的继承类是Throwable。通过Doc文档可以现在在Throwable下有
f两个子类:(面试题:请解释Error和Exceptio
的区别?)Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;Exceptio
:指的是程序之中出现的错误信息,可以进行异常处理,主要关心Exceptio
。那么通过继承关系可以发现,肯定在进行日后异常处理的时候是以Exceptio
为主,而这个时候就可以形成以下的异常处理流程(面试题:请解释java之中的异常处理流程)1、如果程序之中产生了异常,那么会自动的由JVM根据异常的类型,实例化一个指定异常类的对象;2、如果这个时候程序之中没有任何的异常处理操作,则这个异常类的实例化对象将交给JVM进行处理,而JVM的默认处理方式就是进行异常信息的输出,而后中断程序执行;3、如果程序之中存在了异常处理,则会由try语句捕获产生的异常类对象;4、与try之后的的每一个catch进行匹配,如果匹配成功,则使用指定的catch进行处理,如果没有匹配成功,则向后面的catch继续匹配,如果没有任何的cathc匹配成功,则这个时候将交给JVM执行默认处理;5、不管是否有异常,都会执行fi
ally程序,如果此时没有异常,执行完fi
ally,则会继续执行程序之中的其他代码,如果此时有异常没有能够处理(没有一个catch可以满足),那么也会执行fi
ally,但是执行完fi
ally之后,将默认交给JVM进行异常的信息输出,并且程序中断。
通过以上的分析,可以发现,实际上catch捕获异常类型的操作,就和方法接收参数是一样的,那么按照之前所学习过的对象多态性来讲,所有的异常类都是Exceptio
的子类,那么这个时候,实际上所有的异常都可以使用Exceptio
进行接收。classNewpublicstaticvoidmai
Stri
gargsSystemoutpri
tl
好听全球资料 返回顶部