第七章?? 异常的捕获及处理
一、异常的基本概念:
???????????????? ①定义:异常时导致程序中断的一种指令流,所有的异常
???????????????? ? 以类和对象的形式存在
???????????????? ②异常处理机制的优点:易于使用、可自行定义异常类、
???????????????? ? 处理抛出的异常同时又不会降低程序运行的速度
???????????????? ③异常处理格式:?? try{
????????????????????????????????????????????????????????????? //有可能出现异常的语句
??????????????????????????????????????????????????????? }catch(异常类异常对象){
?????????????????????????????????????????????????????????????//编写异常的处理语句
??????????????????????????????????????????????????????? }[ catch(异常类异常对象){
?????????????????????????????????????????????????????????? ?//编写异常的处理语句
??????????????????????????????????????????????????????? }…]
??????????????????????????????????????????????????????? [finally{
??????????????????????????????????????????????????????????? //一定会运行到的程序代码
??????????????????????????????????????????????????????? }]
???????????????? ④常见异常类型:
??????????????????????????? 数组越界异常:ArrayIndexOutOfBoundException
??????????????????????????? 数字格式化异常:NumberFormatException
??????????????????????????? 算术异常:ArithmeticException
???????????????? ⑤异常类的继承结构:
?????????????????????????????????(父类) Throwable???(子类1)? Exception
????????????????????????????????????????????????????????????????????(子类2)?Error
???????????????? ⑥异常信息的输出方式:
??????????????????????????? 1、System.out.println(异常对象);
??????????????????????????? 2、异常对象 .printStackTrace();
???????????????? ⑦Java的异常处理机制:
??????????????????????????? 1、一旦产生异常,则首先会产生一个异常类的实例
????????????????????????????????? 化对象
??????????????????????????? 2、在try语句中对此异常类对象进行捕捉。
??????????????????????????? 3、产生的异常对象与catch语句中的各个异常类型
????????????????????????????????? 进行匹配,如果匹配成功,则执行catch语句中
????????????????????????????????? 的代码
???????????????? ⑧利用向上转型的概念,可以让所有的异常对象都使用
???????????????? ? Exception接收(所有捕获范围小的异常必须放在捕获范
???????????????? ? 围大的异常之前)
?
二、throws与throw关键字
?????????? ????? ①throws:
??????????????????? 1、用throws声明的方法表示此方法不处理异常,
???????????????????????? ?而交给方法调用处进行处理。而且在调用处必须
?????????????????????????????????使用try…catch进行处理
???????????????? ? ??????? ?2、使用格式:
????????????????????????????????? ? public 返回值类型方法名称 (参数列表…) throws 异常类{}
??????????????????????????3、主方法原则上也可以使用throws,但最好不要用
???????????????? ②throw:
??????????????????????????? 1、直接使用throw关键字人为地抛出一个异常,抛
????????????????????????????????? 出时直接抛出异常类的实例化对象即可
????? ????????????????????? 2、throw一般都与try…catch、throws联合使用
??????????????????????????? 3、finally语句块中尽可能不要出现throw和return
?
三、Exception类与RuntimeException类
???????????????? ①继承关系:?????????? Exception????? (上一个是下一个的父类)
???????????????????????????????????????????? RuntimeException
?????????????????????????????????????? IllegalArgumentException
?????????????????????????????????????? NumberFormatException
???????????????? ②Exception在程序中必须使用try…catch进行处理
???????????????? ③RuntimeException可以不使用try…catch进行处理,但如
???????????????? ? 果有异常产生,肯定会导致程序中断执行。(最好还是用
???????????????? ? try…catch进行处理)
?
四、自定义异常类:只需要继承Exception类即可
?
五、断言:
???????????????? ①断言就是肯定某一个结果的返回值是正确的,如果最终
???????????????? ? 此结果的返回值是错误的,则通过断言检查会提示错误
???????????????? ? 信息
???????????????? ②定义格式:???? assert boolean 表达式;
??????????????????????????????????????????????????????? assert boolean 表达式:详细的信息;
???????????????? ③运行格式:javac 类名.java
???????????????????????????????????????????????? java –ea 类名
???????????????? ④断言的使用:
??????????????????????????? 1、虽然断言的返回值是boolean值,但是并不能将
????????????????????????????????? 其作为条件判断语句
??????????????????????????? 2、断言虽然有检查运行结果的功能,但是在开发中
????????????????????????????????? 并不提倡使用断言
原文:http://ljyyanyan.iteye.com/blog/2214501