在程序中应尽量避免产生RuntimeException异常。本节介绍几个常见的运行时异常:ArithmeticException、NullPointer Exception、ClassCastException、Number FormatException和ArrayIndex Out Of BoundsException。
(1)java.lang.ArithmeticException:当出现异常的运算条件时,抛出算术异常。例如,一个整数“除以零”时,抛出此类的一个实例。开发中可以通过逻辑判断来避免,如图5-13所示。
图5-13 ArithmeticException异常避免
(2)java.lang.NullPointer Exception:当应用程序试图在需要对象的地方使用null时,抛出空指针异常。例如,调用null对象的实例方法、访问或修改null对象的字段等。解决空指针异常,通常需要增加引用变量是否为null的判断,当值为非空时再进一步访问该引用变量所指向的对象。
例如:
该异常可以通过逻辑判断避免。例如:
(3)java.lang.ClassCastException:JVM在检测到两个类型间的转换不兼容时引发的运行时异常。
例如:
可以通过instanceof操作符来避免类型强制转换异常。例如:
(4)java.lang.Number FormatException:数字格式异常。
例如:
(5)java.lang.ArrayIndex OutOfBoundsException:索引为负或大于等于数组大小,则该索引为非法索引,用非法索引访问数组时抛出数组索引越界异常。
例如:
避免数组索引越界异常的手段是增加边界判断,例如:(www.xing528.com)
项目总结
本项目讲解了Java在程序异常时的处理机制。程序出错包括Exception和Error,需要程序处理的是Exception。Exception又可分为编译异常和运行时异常,其中,编译异常是程序必须处理的,否则不能通过编译。本项目接着讲解了异常处理机制,着重理解try…catch…finally结构和throw、throws关键字的用法。不同异常类的区别主要体现在类名上,如果程序需要,可以自定义异常类。
项目作业
1.选择题。
(1)如下关于异常的测试代码中,控制台显示的结果依次是__________。
A.main-catch B.main方法结束 C.function-try D.function-finally
E.main-try剩余语句
(2)如下关于异常的测试代码中,控制台显示的结果依次是___________。
A.try B.catch C.finally D.main方法结束
2.填空题。
(1)JDK中,Exception 类中__________类及其子类用于表示运行时异常,其他子类都表示___________异常。
(2)异常捕获中,___________代码块用于监测可能发生的异常,___________代码块用于捕获产生的异常,___________代码块不管是否出现异常都要被执行。
3.简述什么是检查异常(checked exception),什么是运行时异常。
4.简述关键字try、catch、finally、throw、throws的作用。
5.自定义一个编译异常MyException,并编写My Exception Test测试类验证。
6.上机实践书中出现的案例,可自由发挥修改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。