Java基础补习Day3

异常处理

Java为了保证程序的健康运行,通过异常处理机制,来让代码更加完善。

Throwable

是所有异常信息的基类



Error:非常严重的错误,当前Java层面无法解决,让程序终止
Exception:异常
    RuntimeException是Exception的子类

补充:    
    RunTimeException 运行时异常
    Exception  非运行时异常  

如何处理异常,格式如下:
    try{
        发生异常的代码块;
    }catch(NullPointerException e){
        异常处理代码块;
    }catch(IOException e){
        异常处理代码块;
    }finally{
        无论是否发生异常,必须执行一次。
    }
注意:
    1.catch语句数量不定,但至少有一个
    2.如果我们不知道是哪种异常,我们就需要通过catch语句去捕获具体的异常,但是,如果我们不清楚或者异常种类较多,我们要进行统一捕获,我们可以利用多态,在catch中捕获Exception类型的异常,从而处理所有我们能处理的异常(Error不下能处理,所以不适用Throwable)
    3.多个catch捕获时,父类异常不要放在最前面,一次只执行一个catch,如果执行力钱买你的catch后面的catch就不会执行,所以父类在前,就会因为多态的原因,导致后面的异常捕获语句不能执行
异常方式:
自定义异常:
    继承Exception或者RuntimeException或者他们的子类,实现构造器,也可以添加方法
抛出异常:
    throw   抛出异常  
    throws  不处理非运行时异常,把它抛给方法调用者处理,在方法声明之后添加,使用格式:throws + 异常名称

 throw new RuntimeException(e)//将非运行时异常转换为运行时异常
补充:
查看API时关注:
    1.包名
    2.继承关系:父类,接口
    父类能告诉我们这个类的基本功能
        Throwable继承Object,它是Java的基类
    父接口这个类拥有哪一种行为或方法
        所实现的接口Serializable:此接口是一个空接口,里面没有任何抽象方法,不提供功能,是一个标记,是让Java虚拟机知道这个类可以被序列化,序列化就是将对象转换为Java流(字节流)
    3.构造器
    4.方法:主要用于展示记录错误信息    
注意:
如果我们的方法的返回值和参数,我们不确定我们的子类想要使用哪种类型来完成,我们可以选择Object类型 

1.Java中的一切皆对象,Object类是所有类型的父类
2.多态的表现:父类引用指向子类的对象,Object类型的变量可以指向任意类型的对象
3.在Java1.4之后,新增了自动装箱和自动拆箱功能:
    自动装箱:int类型等基本数据类型,可以自动转换为他们的封装类:Integer
    自动拆箱:封装类也可以自动转换回int类型

内部类:

1.成员内部类

         在一个类中编写另一个类,同属性方法一起存在
1.1、编写格式:
    class OutClass{
        class InnerClass{

        }
    }
1.2、成员内部类的修饰词:
        所有的访问控制修饰符、abstract、final、static
1.3、可以继承父类/实现接口

1.4、创建成员内部类:
        成员内部类在外部类创建之后,才能够被加载到内存中,我们才能够使用他创建对象。所以我们创建成员内部类对象的格式:new 外部类().new 内部类() ;
1.5、使用成员内部类:
        成员内部类的使用和其他正常类的使用没有区别,通过内部类的引用和.去使用

1.6、作用:
        1)简化外部类的业务逻辑,一个类的功能依然很复杂,我们就需要再创建一个类来分担这些复杂的业务。
        2)java中只支持单根继承,但是不排除我们可能需要实现多重继承的需求。

注意:
    1).内部类中对访问控制符的操作
    2).成员内部类中是不能拥有静态成员

2.静态内部类:

    一定要在内部类中加入静态成员,我们就需要让内部类也变成静态的,静态内部类可以有静态成员,也可以有非静态成员
创建静态内部类对象:
     1.如果直接使用静态内部类,需要引包
     2.如果加上外部类名,则可以不需要引包
        外部类.内部类 = new 外部类.内部类();

3.局部内部类

写在方法中的类为局部内部类。(最好不要超过10行代码,当然这些以后会在团队的规范文档中确定。)
创建局部内部类对象
    格式:
        new 内部类名();  
    注意:局部内部类只能再把当前方法中使用,并且创建语句在类定义之后

4.匿名内部类

定义类的同时,创建对象。必须依据一个父类和父接口来创建
创建匿名内部类
    格式:
         new 父接口/父类(){具体实现内容(类成员)}

5.其它补充

注意:
- 父类对象/父类接口不可以直接引用子类的自己实现的方法
- 用来规范功能用抽象父类或接口,若是某一种功能或方法用接口
- 父接口引用子类对象,父接口也可以定义父类引用
- 对象存放在堆中,生命周期不确定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值