异常分类
异常体系分成:checked(编译)异常和runtime(运行)和异常。
划分规则是,RuntimeException和其子类属于运行异常,异常除了运行异常,其他都是编译异常。
1.1.运行异常(了解)
runtime异常,顾名思义在编译时期不被检测,只有在运行时期才会被检查出来。
运行异常可以不使用try...catch处理,但一旦出现异常就将由JVM处理(打印堆栈信息)。RuntimeException(运行时异常)通常是指因设计或实现方式不当而导致的问题。程序员小心谨慎是可以避免的异常。如:事先判断对象是否为null就可以避免NullPointerException异常,事先检查除数不为0就可以避免ArithmeticException异常。
运行异常特点:
在编译阶段,Java编译器检查不出来。一般的,程序可以不用使用try-catch和throws处理运行异常。
1.2.编译异常(了解)
编译被检查异常,顾名思义就是在编译时期就会被检测到的异常。除了RuntimeException以及子类以外,其他的Exception及其子类都是编译异常,有时候也称之为非runtime异常。
特点:
在编译阶段,Java编译器会检查出异常,也就说程序中一旦出现这类异常,要么使用try-catch语句捕获,要么使用throws语句声明抛出它,否则编译就不会通过。
简而言之:程序要求必须处理编译异常,使用try-cathc或throws处理。
1.3.自定义异常类(掌握)
一个异常类只表示某一种特定的异常类型,在项目开发中,可能会出现特定的逻辑错误,此时开发者可以对这些错误进行封装成异常。比如我们可以定义一个LogicException用于表示业务逻辑异常。
自定义异常的两种方式,可以继承Exception类或RuntimeException类。一般推荐继承RuntimeException类。
继承异常类之后,一般的,需要提供无参构造方法和带一个String类型参数的构造器。
定义一个客户类,表示一个客户。
定义一个客户异常,专门表示抛出给用户看的异常类型。
测试类
本系列教程为动力节点Java基础内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。视频教程:http://www.bjpowernode.com/video.html,希望可以帮助到大家,学习中遇到问题,可登录官网咨询在线客服老师。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习