黑马程序员——异常处理、Object类

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

  1. 异常处理

  1. 异常的体系

    Throwable

    1. Error

      特点:是由JVM抛出的严重性的问题。这种问题发生一般不针对性处理,只能修改程序。

      1. 通常出现重大问题如:运行的类不存在或者内存溢出等。

      2. 不编写针对代码对其处理。

    2. Exception

      在运行时运行出现的一些情况,可通过try catch finally异常处理语句代码块处理。

                    该体系的特点:都是用父类名作为后缀,阅读性很强。

  2. ExceptionError的子类名都是以父类名作为后缀。

     

    什么是异常:就是在程序运行时发生的不正常情况。

    JAVA中用类的形式对不正常情况进行了描述和封装的异常对象。

    描述不正常情况的类,称之为异常类。

     

    以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问题处理代码分离,以提高阅读性。

     

    问题很多,意味着描述的类也很多,将其共性进行向上抽取,形成了异常体系。

     

  3. 自定义异常

    JAVA中没有定义过的异常,我们就按照JAVA异常的创建思想——面向对象,对异常进行描述,并封装成对象。

    注意:如果让一个类称为异常类,必须要继承异常体系,因为只有称为异常体系的子类才有资格具备可抛性,才可以被两个关键字所操作:throws throw

          

  4. 异常的分类:

        1. 编译时被检测异常:只要是Exception和其子类都是,除了RuntimeException体系。这个要在方法上显式声明抛弃的异常,或者捕捉调用之时可能发生该异常的地方。

          这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。这样的问题都可以针对性处理。

        2. 编译时不检测异常(运行时异常):就是Exception中的RuntimeException及其子类。不用显式声明或捕捉异常。

          这种问题的发生无法让功能继续,运算无法进行,更多是因为调用者的原因导致的,或者引发了内部状态的改变导致的。那么这种问题一般不处理,直接编译通过,在运行时,让调用时的程序强制停止。让调用者对代码进行修正。

  5. throwsthrow的区别

    1throws使用在函数上。、

    throw使用在函数内。

    2throws抛出的是异常类,可以抛出多个,用逗号隔开。

    throw抛出的是异常对象。

          

  6. 异常处理的捕捉形式:

    这是可以对异常进行针对性处理的方式。

     

    具体格式:try{

    //需要被检测导演的代码

    }catch(异常类 变量){//该变量用于接收发生的异常对象

     

    }finally{

    //一定会被执行的代码。

    }

                  异常的注意事项:

    1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类在覆盖方法时只能抛出父类的异常或者该异常的子类。

    2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。

    简单说:子类覆盖父类,只能抛出父类的异常或者子类或者子集。

    注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛。那就只能try

     

    catch的时候,父类的catch放在最下面,因为所有的异常都是Exception异常的子类,它可以处理任何属于其子类的异常,下面所属子类的异常不再进行。

  7. 异常处理的原则

        1. 函数内部如果抛出需要检测的异常,那么函数上必须要声明,否则必须在函数内用trycatch捕捉,否则编译失败。

        2. 如果调用到了声明异常的函数,要么try catch要么throws。否则编译失败。

        3. 什么时候catch,什么时候throws呢?

          功能内部可以解决,用catch。解决不了,用throws告诉调用者,由调用者解决。

        4. 一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理。内部有几个需要检测的异常,就抛几个异常,抛出几个,就catch几个。

  8. finally关键字

    不管函数是否触发异常,都一定会执行。

    要想不执行,就要在catch语句块的最后一行加上System.exit(0);退出JVM

     

    作用:用于关闭(释放)资源。

     

    try catchfinally组合情况

    1try catch finally

    2try catch当没有必要释放资源时,可以不用定义finally

    3try finally异常无法直接catch处理,但是资源需要被关闭。

    如图:

     

  1. Object——所有对象的基类

1==equals的用法:

==怎么用?

可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。

可以用于比较引用数据类型,比较的是对象的地址值是否相等。

 

equals怎么用?

equals只能用于比较引用数据类型的。

Object提供的equals是用于比较对象地址值是否相同。

自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。

 

2toString()方法

当直接把对象放在输出语句里输出时,相当于通过对象调用了toString()方法得到字符串描述,再输出结果。

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值