.Net转Java自学之路—基础巩固篇十(异常)

时间:2021-10-15 21:08:50

异常Exception

  程序运行时出现的不正常情况。

异常问题分为俩大类:

  1、可以处理的问题

    一般用Exception(异常)来进行描述,这个异常可以有针对性的代码处理。

  2、重大错误问题

    用Error进行描述,这种异常发生后,一般不编写针对性的代码来进行处理,而是对程序进行修改。

声明异常

  throws Exception :在功能上标识异常。

  若该功能用thrwos Exception来标识异常,那么调用者必须处理该异常信息。

  但是该功能声明的异常是一个特殊的异常子类时,调用者可以不对异常进行任何处理。这个异常是RuntimeException(运行异常)

两种处理异常的方式

  1、try { } catch { }

  2、同样抛出异常throws Exception

异常分为俩种:

  1、编译被检测异常:包括除去Exception子类RuntimeException以外的所有异常。

  2、编译时不被检测异常:RuntimeException以及子类。

自定义异常

  将特有的问题进行描述,并封装成对象。

  步骤:

    定义一个类对异常进行描述,该类必须继承异常类(Exception)或运行异常(RuntimeException)。

  根本原因:异常体系和其它对象的不同之处在于异常体系都具有可抛性。异常的类和对象都可以被俩个关键字(throws、thorw)所操作,并且只有异常体系具备这个特点。

throws和throw的区别

  1、throws作用与函数上,用于该功能容易出现的问题。抛出的异常要被调用者进行处理。

        throw 作用在函数内,用于抛出指定的异常对象。

  2、throws后跟的时异常类,可以有多个,中间用逗号隔开。

        throw 后跟的时异常对象。

  只有异常体系的类和对象才可以被这俩个关键字所操作。

finally块

  主要用于关闭资源的代码。无论何时都执行(除去System.Exit(0)退出JVM的情况不执行)。

异常处理

  1、当子类覆盖父类时,若父类的函数抛出了异常,那么子类覆盖父类要么不抛异常,要么抛出该异常或该异常的子类。

  2、若父类抛出了对个异常,子类覆盖父类时,只能抛出这些异常的子集。

  简单来说,子类只能抛出父类的异常或异常的子类,子类不可以抛出父类没有的异常。

  注:若被覆盖的函数没有异常抛出,那么子类的函数绝对不能有异常抛出。若子类中有异常发生,那么子类只能用try { } catch { }

    当try对象对个catch时,若catch的类型包含有继承关系时,那么父类异常的catch必须放在最下方。