Java异常

本课目标

  • 理解异常概念和Java异常处理机制
  • 熟练使用 try--catch--finally处理异常
  • 熟练使用 throw、throws 抛出异常
  • 熟悉Java异常体系结构
  • 了解自定义异常
1.异常

定义:指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

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

Java异常_第1张图片

3.Java中如何进行异常处理
  • 五个关键字:try、catch、finally、throw、throws

Java异常_第2张图片

4.try--catch

捕获异常的三种情况:

  • try 块中所有语句正常执行完毕,不会发生异常,那么 catch 块中的所有语句都将会被忽略
Java异常_第3张图片
  • try 语句块在执行中遇到异常,那么在try 块中其余剩下的代码都将被忽略,系统会自动生成相应的异常对象,如果这个异常对象与 catch 中声明的异常类型相匹配,则相应的 catch 块将被执行

Java异常_第4张图片Java异常_第5张图片

  • try 语句块在执行中遇到异常,如果这个异常对象与 catch 中声明的异常类型不匹配,程序会中断。

Java异常_第6张图片Java异常_第7张图片

5.在 catch 块中处理异常
  • 加入用户自定义处理信息
  • 异常对象常用的方法处理信息

方法名

说    明

void printStackTrace()

输出异常的堆栈信息

String getMessage()

返回异常信息描述字符串,

printStackTrace()输出信息的一部分

常见的异常类型

异常类型 说明
Exception

异常层次结构的父类

ArithmeticException

算术错误情形,如以零作除数

ArrayIndexOutOfBoundsException

数组下标越界

NullPointerException

尝试访问 null 对象成员

ClassNotFoundException

不能加载所需的类

IllegalArgumentException

方法接收到非法参数

ClassCastException

对象强制类型转换出错

NumberFormatException

数字格式转换异常,如把"abc"转换成数字

6.多重 catch 块

引发多种类型的异常

  • 排列 catch 语句的顺序:先子类后父类
  • 发生异常时按顺序逐个匹配
  • 只执行第一个与异常类型匹配的 catch 语句

Java异常_第8张图片Java异常_第9张图片

7.try--catch--finally
Java异常_第10张图片 是否发生异常都执行 Java异常_第11张图片 不执行的情况
8.存在 return 的 try--catch--finally 块

Java异常_第12张图片Java异常_第13张图片

在 try--catch--finally 块中存在 return 语句,先执行 finally 块,后执行 return

当 catch 块中如果存在 System.exit(1) 时,此时中断程序,退出虚拟机,这也是 finally 块唯一不执行的情况

9.声明异常
  • Java语言中通过关键字 throws 声明某个方法可能抛出的各种异常
  • throws 可以同时声明多个异常,多个异常用逗号隔开

Java异常_第14张图片

10.抛出异常

系统自动抛出异常、调用者抛出异常。Java语言中通过关键字 throw 来自行抛出异常

11.throw 和 throws 的区别
  • 作用不同:throw 用于在程序中抛出异常;throws 用于声明在该方法内抛出了异常
  • 作用位置不同:throw 位于方法体内部,可以作为单独语句使用;throws 必须跟在方法参数列表后面,不能单独使用
  • 内容不同:throw 抛出一个异常对象,而且只能是一个;throws 后面跟异常类,而且可以跟多个异常类
12.自定义异常

Java异常_第15张图片

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

Java异常_第16张图片

你可能感兴趣的:(Java面向对象,java,开发语言)