1、认识异常 一场是指在程序运行过程中所发生的不正常事件
if-else语句进行异常处理缺点
1)代码臃肿
2)开放效率低
3)不健全,很难穷举所有的异常
4)影响代码的可读性,是代码更难维护
2、Java中的异常类
①所有的异常类心都是Throwable类的子类
Throwable类 包含:
1) Error类:表示仅靠程序本身无法恢复的严重错误(内存溢出动态链接失败,虚拟机错 误)
2)Exception类:由Java程序抛出和处理的非严重错误(文件找不到,网络连接不同或者连接中断、算术运算出错、数组下标越界)
Exception类又包括两大类:
①运行异常:RuntimeException 及其子类
②Checked异常(非运行时异常)
-
异常 说明 Exception 异常层级结构的根类 ArithmeticException 算数错误异常,如一零作为除数 ArrayIndexOutOfBoundsException 数组下标越界 NullPointerException 尝试访问null对象成员 ClassNotFoundException 不能加载所需的类 InpMismatException 欲得到的数据类型与实际输入的类型不匹配 IllegalArgumentException 方法接收到非法参数 ClassCastException 对象强制类型转换错误 NumberFormatException 数字格式化转换异常,如把"abc"转换成数字
Java异常处理通过5个关键字来实现:try、catch、finally、throw、throws
1、try-catch
1)如果try语句块中所有的语句正常执行完毕,没有发生异常那么catch语句块不执行
2)try语句块中出现异常,并且这个异常与catch语句块中声明的异常类型匹配,执行匹配的异常类型,那么try语句块中剩下的代码不执行
3)发生异常,catch中没有相匹配的异常类型那么方法直接退出
常用方法
void printStackTrace():输出异常的堆栈信息
String getMessage():返回异常信息描述字符串,该字符串描述了异常产生的原因
printStackTrace()输出信息的一部分
2、try-catch-finally
1)try语句块中的所有语句正常执行,finally也会被执行
2)try语句块在执行过程中发生异常,无论这种异常能否被catch快捕获都执行finally语句块中的代码
注意*try-catch-finally结构中try语句快必须存在,catch、finally其中至少出现一个
catch语句块中有return关键字finally 语句块也会执行
1、throws(抛出异常)
通过try-catch捕获异常
throws抛出异常