DESKTOP-AD6BCSN_张景安-2020-12-16

总结:

1. 方法可变参数

1.1 什么是方法可变参数?

方法就耳边参数是指方法形参的个数变化,个数可以为0,或者n个

1.2 如何定义方法可变参数

public double area(int ...param)

1.3 方法可变参数的规则

  1. 一个方法只可以有一个可变参数
  2. 如果方法有多个参数,可变参数必须放在最后。
  3. 方法可变参数本质是一个数组,因此可变参数可以被当作数组来使用。

1.4 方法可变参数的调用

2. 异常:

2.1 什么是异常?

异常,exception,中文为例外,是指程序在编译时,或者是运行时发生的不寻常的事情

2.2 异常的体系结构

r1tnzD.png

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;
        }
    }

解析:

被调方法先自己处理异常,在抛出异常该主调方法

  1. int res = i/j由于j=0,jvm抛出ArithmeticException异常,该异常被catch抓住,所有catch中的e就是i/j时抛出的异常,但是这个异常由于是jvm创建并抛出的,因此是英文提示。

  2. 如何改为中文提示。方法是开发人员自定义一个异常对象,在异常对象的构造函数中输入中文异常描述信息,再将这个异常对象使用throw关键字抛出。

  3. 在主调方法中捕获的异常就是中文信息

2.7 自定义异常

Java关于异常提供了很多API,如果这些异常API不能满足你的需要,此时你可以自己定义异常类。用于满足你自己的业务需要。

  1. 定义异常类,继承Exception或者RuntimeException。继承Exception表示自定义编译时异常。继承RuntimeException表示自定义运行时异常。

  2. 设置异常的描述信息

在Throwable类中定义了描述异常信息的属性,名字是message。可以将自定义异常的描述存储在该属性中。通过构造函数可将异常描述信息传递到throwable中赋值给message属性

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1