DESKTOP-AD6BCSN_张景安-2020-12-16
总结:
1. 方法可变参数
1.1 什么是方法可变参数?
方法就耳边参数是指方法形参的个数变化,个数可以为0,或者n个
1.2 如何定义方法可变参数
public double area(int ...param)
1.3 方法可变参数的规则
- 一个方法只可以有一个可变参数
- 如果方法有多个参数,可变参数必须放在最后。
- 方法可变参数本质是一个数组,因此可变参数可以被当作数组来使用。
1.4 方法可变参数的调用
2. 异常:
2.1 什么是异常?
异常,exception,中文为例外,是指程序在编译时,或者是运行时发生的不寻常的事情
2.2 异常的体系结构
2.3 Throwable类
Throwable类是异常体系结构的父类,Throwable类的父类是Object,在Throwable下分为两套异常类别,分别是Error和Exception,其中Error是指错误,Exception是指异常。
2.4 Error类
Error是指无法通过开发人员编写程序能够解决的异常叫做Error。
典型的Error:内存溢出、动态连接失败,虚拟机错误
2.5 Exception类
2.5.1 编译时异常
编译时异常必须捕获,如果不捕获会导致程序无法编译,也就无法运行。
2.5.2 运行时异常
RuntimeException类是所有运行时异常的父类。
2.6 如何捕获异常?
java中有五个与捕获异常相关的关键字,分别是try,catch,finally,throw,throws。这五个异常关键字分成两类处理异常的方式。其中try,catch,finally为一组专门处理异常的方式,其中throw,throws为一组专门处理异常的方式
2.6.1 try,catch,finally异常处理
//用法1
try{
}catch(Exception e){
}
/*
1.异常发生后,程序进入到catch,导致从异常发生位置开始到catch位置之间无法运行
当try中没有发生异常时,catch块不会运行
*/
//用法2
try{
}catch(Exception e){
}finally{
}
//用法3
try{
}finally{
}
/*
1.当try后有finally时,finally是必须要执行的。
2.当try中有return语句时,finally块在return之前进行。
3.发生异常执行顺序:try-catch-finally
4.没有发生异常时执行顺序:try-finally
*/
解析:
- try中用于包裹注可能发生的异常的代码
- catch中用于捕获异常,并对异常进行处理
- finally中用于回收资源
- try与catch组合时,一个try可以与多个catch组合,但是try只可以有一个
- try,catch,finally三者组合时,每一个都只可以有一个。
- 当有个catch语句 块时,子类的执行顺序必须在父类异常之前。并列子类的异常没有先后顺序。
2.6.2 throw,throws异常处理
2.6.2.1 throws
用于定义在方法声明的后面,表示该方法可能会抛出异常,并告诉主调方法需要处理该方法抛出的异常。
Throws不能单独写一行代码,后面是抛出异常的类型,可抛出多个异常类型,多个之间用逗号分隔。
2.6.2.1 throw
-
被调方法内部发生异常时,被调方法不处理异常,而是将异常抛给主调方法,由主调方法处理异常。
-
被调方法先自己处理异常,再抛出异常给主调方法
public static void main(String[] args) {
try {
divide();
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
public static void divide() throws ArithmeticException{
try {
System.out.println("start");
int i=1,j=0;
int res = i/j;
System.out.println("over");
} catch (Exception e) {
ArithmeticException ex = new ArithmeticException("除零异常");
throw ex;
}
}
解析:
被调方法先自己处理异常,在抛出异常该主调方法
-
int res = i/j由于j=0,jvm抛出ArithmeticException异常,该异常被catch抓住,所有catch中的e就是i/j时抛出的异常,但是这个异常由于是jvm创建并抛出的,因此是英文提示。
-
如何改为中文提示。方法是开发人员自定义一个异常对象,在异常对象的构造函数中输入中文异常描述信息,再将这个异常对象使用throw关键字抛出。
-
在主调方法中捕获的异常就是中文信息
2.7 自定义异常
Java关于异常提供了很多API,如果这些异常API不能满足你的需要,此时你可以自己定义异常类。用于满足你自己的业务需要。
-
定义异常类,继承Exception或者RuntimeException。继承Exception表示自定义编译时异常。继承RuntimeException表示自定义运行时异常。
-
设置异常的描述信息
在Throwable类中定义了描述异常信息的属性,名字是message。可以将自定义异常的描述存储在该属性中。通过构造函数可将异常描述信息传递到throwable中赋值给message属性
评论留言