JavaSE-day09

异常

异常解决方案1--捕获处理--自己解决

异常捕获处理的格式:

try{

可能抛出异常的代码

}catch(异常的类型 异常的名字){

万一捕获了异常,进行处理的解决方案

}

try-catch结构可以嵌套:如果有多种异常类型需要特殊处理的话

private static void method2(){
        //1.按照捕获处理的格式完成结构
        try {
            //2.复习刚刚的代码
            System.out.println("请输入你要计算的第一个整数");
            int a1=new Scanner(System.in).nextInt();
            System.out.println("请输入你的第二个整数");
            int a2=new Scanner(System.in).nextInt();
            System.out.println(a1/a2);
        }catch (ArithmeticException e){//异常类型 异常名
            System.out.println("除数不能为0!");
        }catch (InputMismatchException e){
            System.out.println("请输入规定的整数类型");
        /*使用多态的思想,无论是什么子异常,统一看做父类型Exception
        * 做出更加通用的解决方案,甚至可以只写这一个,上面2个不写*/
        }catch (Exception e){
            System.out.println("你的数据不对,请重新输入!");
        }
    }

异常解决方案2--向上抛出--交给调用者解决

异常抛出的格式:在方法的小括号与大括号之间,写:throws异常类型

如果有多个异常,使用逗号分割即可

如果一个方法抛出了异常,那么谁来调用这个方法,谁就需要处理这个异常

这里的处理也有两种方案:捕获处理 或 继续向上抛出

但注意:我们一般会在main()调用之前将异常解决掉,而不是将问题抛给main(),因为没人解决了,该报错还报错

private static void f() {
        try{
            method3();
        }catch (Exception e){
            System.out.println("数据不对");
        }
    }
private static void method3() throws Exception{
        //1.复习刚刚的代码
        System.out.println("请输入你要计算的第一个整数");
        int a1=new Scanner(System.in).nextInt();
        System.out.println("请输入你的第二个整数");
        int a2=new Scanner(System.in).nextInt();
        System.out.println(a1/a2);
    }

抽象

  1. 被abstract关键字修饰的方法是抽象方法,抽象方法没有方法体

  1. 被abstract修饰的类是抽象类。如果一个类中包含了抽象方法,那么这个类就必须被声明成一个抽象类

  1. 当一个子类继承抽象父类以后,有两种解决方案

方案一:变成普通方法,实现父类中所有未实现的抽象方法,“父债子偿”

方案二:变成抽象子类,继续抽象“躺平”

  1. 抽象类不可以被实例化

  1. 抽象类中可以定义成员变量,成员常量

  1. 抽象类中可以全是普通方法:如果抽象类中没有抽象方法,是为了防止外界创建本类的对象(抽象类不可以被实例化)

public class AbstractDemo2 {
    public static void main(String[] args) {
        //5.抽象类不可以实例化/创建对象
        //        Animal2 a=new Animal2();
        //6.创建子类对象进行测试
        Pig2 p=new Pig2();
    }
}
//1.创建父类
abstract class Animal2{
    //3.创建父类的无参构造
    public Animal2(){
        System.out.println("我是父类的无参构造");
    }
}
//2.创建子类
class Pig2 extends Animal2{
    public Pig2(){
        System.out.println("我是子类的无参构造");
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值