常见异常的概念:正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行 。
异常的体系结构:
异常的处理方式:
1)自己捕获异常:try{产生异常的代码}catch(Exception e){异常捕获后的操作}finally{一定执行的代码块}
2)抛出:throws;在方法的头部抛出异常类型
注意:①写多个捕获异常的语句块,链式结构捕获多异常,根据不同的异常,做不同的处理
②捕获异常可以写异常的父类,也可以捕获到对应子类的异常
③catch(捕获的异常类型 e)捕获的异常实际是得到一个异常对象,该对象e可以在catch语句块 直接使用
④顺序执行:进入异常捕获语句块
⑤如果产生异常,执行catch捕获,捕获到对应异常,并且对应catch后面的代码块
⑥finally语句块一定会执行到:前提前面语句没有执行System.exit(0)退出虚拟机
⑦方法抛出运行时异常,在方法头可以不用抛出异常
⑧方法抛出编译时异常:方法必须处理异常,或者抛出同类异常,或者抛出异常该异常的父类 类型异常
如何获得异常信息:
方式1:
System.out.println(e.getMessage());//e.getMessage()
方式2:
System.out.println(e);//e.toString()
方式3:
e.printStackTrace();//打印异常信息//最常用的一种方法,打印的信息最详细
finally语句块:除非在该语句块提前退出虚拟机(system.exit(0))否则一定会执行的语句块
自定义异常:
1)需求:java中已经写好很多异常,但不能满足开发中所有异常描述的需求,所以需要自定义异常
2)自定义异常继承异常类
3)参照其他异常通过Exception设置异常提示信息