10.14号关于异常的上课实践报告

 

异常发生于程序执行期间,表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象。 

异常处理的目的是依据实际情况提供不同的错误应对策略与手段,使程序更稳定,更安全。
异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运

首先运行P10的Java文件

 

了解到Exception是所有异常类的超类,int为0时不能作为除数,否则会出现上方的异常。

try代码块执行可能会出错的代码,当捕捉到异常时,会自动跳转到catch代码块,执行异常的处理,最后finally的语句一定会被执行。

Throwable类有两个直接子类Exception和Error

可捕获的异常分为Check异常和Runtime异常,用throw语句可以抛出这种异常对象。

assert [boolean 表达式],其次使用assert断言语句时,

如果[boolean表达式]为true,则程序继续执行。如果为false,则程序抛出AssertionError,并终止执行。

div为无符号除法,idiv为有符号除法
idiv进行的是128 / 64位除法,即被除数为128位、除数为64位。一个浮点数除以0不会报错,返回为Infinity,翻译过来就是无穷大。

try代码块后面可以接多个catch语句,每个catch捕获一个异常,不能有两个相同的异常类型。

将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。

P26代码执行

 

 p27代码执行

 

 p28代码执行

 

 对于try语句内部嵌套try语句,执行完内部的try catch语句,不会向外层的try-catch语句抛出异常,继续按照顺序执行。

p29代码执行

 

finally语句不一定会执行,若在catch语句强制退出exit(0)则不会执行finally语句。

 

 

二、进一步深入学习

1.throws语句的作用

throws语句表面某个方法的内部代码存在异常,但自己不能处理异常,需要由调用者来处理,或者在方法体中用try-catch语句来捕捉异常。

异常主要分为受控异常和不受控异常,顾名思义,受控异常在执行之前就会告诉报错了,而不受控异常,比如数组越界编译期间不会告诉。

当一个方法声明抛出多个异常,在此方法调用语句处,只要catch其中任何一个异常,代码就可以正常编译。

 

 

 在Java7之后的版本,在catch语句内部可以捕获多个异常,比如IOExpection |  OutofMemoryExipetion.

 

 

 

 

 

三、自定义异常与异常处理链

 P43代码执行

 

Java异常处理的目的是提高程序的健壮性,你可以在catch和finally代码块中给程序一个修正机会,使得程序不因异常而终止或者流程发生以外的改变。同时,通过获取Java异常信息,也为程序的开发维护提供了方便,一般通过异常信息就很快就能找到出现异常的问题(代码)所在。

  Java异常处理是Java语言的一大特色,也是个难点,掌握异常处理可以让写的代码更健壮和易于维护。

通用异常

  • JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。
  • 程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。
posted @ 2022-10-17 22:51  -她的梦-  阅读(24)  评论(0编辑  收藏  举报