一、 本章内容介绍
异常的概念
异常体系图(!!)
常见的异常
异常处理的概念
异常处理的分类
自定义异常
throw和throws的对比
1.异常介绍
1.1.1 基本概念
Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)
1.1.2 执行过程中所发生的异常事件可分为两类
1) Error(错误): Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError【栈溢出】和OOM(out of memory),Error 是严重错误,程序会崩溃。
2) Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等,Exception 分为两大类:运行时异常(程序运行过程中发生)和编译时异常(编译过程中发生)。
图1.
说明
1) Error 和 Exception 都是Throwable的子类.
2) 所有的Error 和 Exception 实现了Serializable 接口(简单说明:如果一个类实现了Serializable 接口,那么这个类的对象,就可以直接存放到磁盘(String) , 或者该对象可以在网络上传输. )
图2.
说明:
1) Throwable 下有个两个重要的子类,Error, Exception
2) Exception 分为 编译异常和运行异常.
3) 编译异常的直接父类就是Exception
4) 运行异常的直接父类时RuntimeException
5) 编译异常 称为受检异常,必须处理,否则编译不能通过, 常见的有IOExcepton(文件操作),SQLException(数据库操作)
6) 运行异常, 可以不捕获,编译可以通过,并且可以运行,但是一旦发生了运行异常(又没有处理),则程序崩溃。常见的有: NullPointerException, ArrayIndexOutofBoundsExceptino(数组越界异常), ArithmeticException(算术异常),ClassCastException(类型转换异常)
2.常见的运行时异常
1.1.1 常见的运行时异常包括
1) NullPointerException空指针异常
2) ArithmeticException数学运算异常
3) ArrayIndexOutOfBoundsException数组下标越界异常
4) ClassCastException类型转换异常
5) NumberFormatException数字格式不正确异常
1.1.2 常见的运行时异常举例
1)NullPointerException空指针异常
当应用程序试图在需要对象的地方使用 null 时,抛出该异常,看案例演示
2)ArithmeticException数学运算异常
当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例, 案例演示
3)ArrayIndexOutOfBoundsException数组下标越界异常
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引
4)ClassCastException类型转换异常
当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个 ClassCastException
5)NumberFormatException数字格式不正确异常
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常
null调方法就出错了