关于Java异常最详细透彻的理解(6)
总结
-
编译时异常是代码本身不存在逻辑,语义上错误,一般是IOException这种(可以在运行过程中,通过与IO的交互来达到一个代码的修正,比如可以在FileInputStream里面,让用户一直输入文件路径,通过try catch加循环最终达到让用户输入一个正确路径。---即调用方能够直接处理的异常情况),可以改变输入或者输出来修正该异常,不需要对代码本身做修改,需要做出改变的是外部世界。
-
而运行时异常则是代码本身有逻辑上的错误,需要手动修改,即需要做出改变的是外部世界,一般不建议对其进行捕获处理,由运行时的jvm自动将其抛出。因为捕获处理没有意义(处理的本意在于提高程序健壮性,解决代码逻辑问题),因为不可能在程序执行过程中对自身的代码(如3/0这类ArithmeticException运行时异常)做出修改(3/0属于代码本身,我们不需要进行处理,只需要运行后jvm自动发现这个运行时异常打印到控制台,让我们手动修改就好了。---runtime exception用来指示一种调用方法本身无法处理/恢复的程序错误。而程序错误通常是无法在运行过程中处理的,必须改正程序代码)
启示:我们在开发过程中,在自定义方法里面调用别人写的某个方法(已封装),如果此方法中有运行时异常,我们作为方法调用者,是无法去修改代码的