[关闭]
@wangyupu 2020-06-11T14:49:02.000000Z 字数 2887 阅读 28

JAVA基础面向对象第六章异常

JAVA面向对象

了解异常 ;;异常减而言之,就是非正常

  1. 了解异常概念
  2. 理解Java异常处理机制
  3. 会捕捉异常
  4. 会抛出异常
  5. Java异常体系结构

生活中的异常(这人被撞车我也是服了)

  1. 正常情况下,小王每日开车去,上班, 耗时大约30分钟
  2. 一路畅通
  3. 但是,异常情况迟早要发生!()
  4. 堵车!
  5. 撞车

弊端:

  1. 1、代码廉肿
  2. 2、程序员要花很大精力“堵漏洞”
  3. 3、程序员很难堵住所有“漏洞”
  4. 使用异常处理机制
  1. 异常是指在程序的运行过程中所发生的不正常的事件它会中断正在运行的程序
  2. 程序运行 异常 程序中断运行
  3. 生活中面对异常通常会这样处理
  4. 堵车! 绕行或者等待
  5. 撞车! 请求交警解决
  6. 生活中,根据不同的异常进行相应的处理,而不会就此中断我们的生活

Java编程语言使用异常处理机制为程序提供了错误处理的能力

  1. 程序中预先设置好对付异常的处理办法------程序运行-----异常
  2. 对异常进行处理------------处理完毕,程序继续运行

lava中如何进行异常处理

  1. Java的异常处理是通过5个关键字来实现的:
  2. try.catchfinally. throw, throws
  3. 捕获异常 声明异常 抛出异常
  4. try 执行可能产生异常的代码 throws throw
  5. catch 捕获异常 声明方法可能要抛出的各种异常 手动抛出异常
  6. finally 无论是否发生异常,代码总能执行

try-catch块5-1

  1. 使用try-catch块捕获异常, 分为三种情况:
  2. 第一种情况:正常
  3. public void method(}{
  4. try {
  5. //代码段(此处不会产生异常)
  6. } catch (异常类型ex) {
  7. //对异常进行处理的代码段
  8. catch
  9. }
  10. //代码段
  11. try-------------------catch块后的代码段

try-catch块5-5

  1. catch块中处理异常
  2. 加入用户自定义处理信息
  3. System.err.printn("出现错误:被除数和除数必须是整数");
  4. 调用方法输出异常信息
  5. e.printStackTrace();
  6. 异常对象常用的方法
方法 说明
void printStackTrace() 输出异常的堆栈信息
String getMessage() 返回异常信息描述字符串,是printStackTrace()输出信息的一部分

常见的异常类型

异常类型 说明
Exception 异常层次结构的父类
ArithmeticException 算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问null对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把"abe"转换成数字

try-catch-finally 2-1finally不管任和情况下都可以进入正常运行

  1. try-catch块后加入finally
  2. 是否发生异常都执行
  3. 不执行的唯一情况
  4. try
  5. ↓→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→↓
  6. ↓有异常
  7. 无异常
  8. ↓中断程序,退出Java虚拟机
  9. catch
  10. System.exit(1)
  11. ←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←
  12. finally块→→→→→→→→→→→→→→→→→→→→→→→→→→→→→不管添加

try-catch-finally 2-2

  1. 存在returntry-catch-finally
  2. public void method(){
  3. try {
  4. //代码段1
  5. //产生异常的代码段2
  6. }catch(异常类型ex){
  7. //对异常进行处理的代码段3
  8. return;
  9. }finally{
  10. //代码段4
  11. }
  12. try块中有retum语句执行过程与此类似
  13. 发生异常
  14. try →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 产生异常 对象
  15. 进入catch
  16. 异常类型
  17. catch
  18. return ←←←←←←←←←←←←←←←←←←←←←←←←← ←←←←←←←←←←←←←
  19. ↓执行inally
  20. finally

多重catch块

  1. 引发多种类型的异常
  2. 排列catch语句的顺序:先子类后父类
  3. 发生异常时按顺序逐个匹配
  4. 只执行第-一个与异常类型匹配的catch语句

小结

  1. try-catch-finally结构中try语句块是必须的,catch,
  2. finally语句块均可选,但两者至少出现之一
  3. 面试题: try-catch块中存在return语句,是否还执行
  4. finally块?如果执行,说出执行顺序
  5. try-catch- finally块中,finally块唯- 不执行的情况
  6. 是什么?

声明异常

  1. 如果在一一个方法体中抛出了异常,如何通知调用者
  2. throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
  3. 方式1:调用者处理异常
  4. 方式2:调用者继续声明异常
  5. main()方法声明的异常由Java虚拟机处理

抛出异常

  1. 除了系统自动抛出异常外,有些问题需要程序员自行
  2. 抛出异常
  3. 使用throw抛出异常
  4. throwthrows
throw throws
生成并抛出异常 声明方法内抛出了异常
位于方法体内部,可作为单独语 必须跟在方法参数列表后面,不能单独使用
抛出一个异常对象,且只能是一个 声明抛出异常类型, 可以跟多个异常

异常体系结构

  1. Exception Object
  2. Error类的父类
  3. ava,应用程序
  4. 抛出和处理的非严重错误
  5. 仅靠程序本身无法
  6. Throwable
  7. 恢复的严重错误
  8. Error
  9. Exception
  10. 运行时异常,不要求
  11. 程序必须做出处理
  12. SQLException
  13. RuntimeException
  14. AWTError
  15. ClassNotFoundException
  16. ArithmeticExcqption
  17. ThreadDeath
  18. NullPointerExcepion
  19. NumberF ormaltException.
  20. Checked异常,程序
  21. ...
  22. 必须处理该类异常

自定义异常

  1. JDK中的异常类型不能满足程序的需要时,可以自定义异常类
  2. 使用自定义异常的步骤
  3. 1.定义异常类2.编写构造方法,继承父类的实现3.实例化自定义异常对象4.使用throw抛出
  4. 继承throwable类、继承Excepion 或者RuntimeException

异常链

  1. A方法调用B方法时,B方法却抛出了异常。那A方法
  2. 继续抛出原有的异常还是抛出一个新异常呢?
  3. 抛出原有的异常
  4. A方法与B方法进行了关联,不便于代码的修改和扩展
  5. 抛出新的异常
  6. 异常链创建了新的异常但却保留了原有异常的信息

异常处理原则

  1. 异常处理与性能
  2. 异常只能用于非正常情况
  3. 不要将过于庞大的代码块放在try
  4. catch中指定具体的异常类型
  5. 需要对捕获的异常做处理

异常分为Checked异常和运行时异常

  1. Checked异常必须捕获或者声明抛出
  2. 运行时异常不要求必须捕获或者声明抛出
  3. try-catch-finally中存在return语句的执行顺序
  4. finally块中语句不执行的情况
  5. throwthrows关键字的区别
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注