异常就是程序在运行时出现的不正常情况。
异常由来:问题也是现实生活中一个具体的事物,也可以通过Java的类的形式进行描述,并封装成对象。
Java对不正常情况进行描述后的对象体现。
Throwable类是所有错误或者异常的超类。
出异常直接跳转到catch,没出异常不执行catch。
throws Exception :在功能上通过throws关键字声明了该功能有可能会出现问题。
多异常情况一发生已经就会跳转到try,try会找相应的catch处理,不会出现两个异常处理。
声明几个异常,就应该对应有几个catch块。不要定义多余的catch块、
自定义异常必须是自定义类继承Exception。
异常类和异常对象都能被抛出,都具备可抛性,这个可抛性是Throwable这个体系的独有特点。只有这个体系中的类和对象才可以 被throws和throw操作。
throws使用在函数上(小括号()和大括号{ }之间),后面跟的异常类,可以跟多个用逗号隔开。throw使用在函数内,后面跟的是 异常对象(new FuShuException)。
RuntimeException以及RuntimeException的子类在函数内抛出,函数上不用声明,编译一样通过。
如果函数上声明了RuntimeException,调用者可以不进行处理(try或者throws),编译一样通过。
自定义异常时,如果该异常发生无法在继续进行运算的话就让该自定义异常继承RuntimeException。
异常问题在内部解决不用声明(throws)。
catch是处理异常的。如果没有catch就代表异常没有被处理过,如果该异常是测试时异常,那么必须声明。
异常在子父类覆盖中的表现:
1、子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
子类继承父类,不能抛父类没有的异常。
2、如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3、如果父类或者接口的方法中没有异常抛出,那么子类在覆盖该方法时,也不可以抛出异常。
如果子类方法发生了异常,就必须进行try处理,绝对不能抛