重载简单记:
同一个类中,方法名相同,参数不同的方法。与返回值无关。
参数不同:个数不同、类型不同、顺序不同
Java中如何进行异常处理
Java的异常处理是通过5个关键字来实现的: try、catch、 finally、throw、throws
![](https://i-blog.csdnimg.cn/blog_migrate/65bab79a968dd8dcef801151fb79d1b8.png)
try-catch块
a.在catch块中处理异常
//加入用户自定义处理信息
System.err.println("出现错误:被除数和除数必须是整数”);
b.调用方法输出异常信息
e.printStackTrace();
c.异常对象常用的方法
方 法 | 说 明 |
void printStackTrace() | 输出异常的堆栈信息 |
String getMessage() | 返回异常信息描述字符串, 是printStackTrace()输出信息的一部分 |
异常类型
异常类型 | 说 明 |
Exception | 异常层次结构的父类 |
ArithmeticException | 算术错误情形,如以零作除数 |
ArraylndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 尝试访问null 对象成员 |
ClassNotFoundException | 不能加载所需的类 |
IllegalArgumentException | 方法接收到非法参数 |
ClassCastException | 对象强制类型转换出错 |
NumberFormatException | 数字格式转换异常,如把"abc转换成数字 |
在try-catch块后加入finally块
是否发生异常都执行
不执行的唯一情况
![](https://i-blog.csdnimg.cn/blog_migrate/599656916eae3d6e383c8241aa3e12fa.png)
引发多种类型的异常
排列catch 语句的顺序: 先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句
总结
try-catch-finally结构中try语句块是必须的,catch,finally语句块均可选,但两者至少出现之一
try-catch块中存在return语句,还会执行finally块(finally块会在return语句前执行)
try-catch- finally块中, finally块唯一不执行的情况是输出System.exit(1)语句
使用throw抛出异常
throw | throws |
生成并抛出异常 | 声明方法内抛出了异常 |
位于方法体内部,可作为单独语句使用 | 必须跟在方法参数列表后面,不能单独使用 |
抛出一个异常对象,且只能是一个 | 声明抛出异常类型,可以跟多个异常 |
异常处理原则
异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理
总结
异常分为Checked异常和运行时异常
Checked异常必须捕获或者声明抛出
运行时异常不要求必须捕获或者声明抛出
try-catch-finally中存在return语句的执行顺序
finally块中语句不执行的情况
throw和throws关键字的区别