自定义异常
在实际开发中,因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java的对问题封装的思想。将特有的问题,进行自定义的异常封装。自定义异常类必须继承自Exception或其子类。
在实际开发中,如果没有特殊的要求,自定义异常类只需要继承Exception类,在构造方法中使用super()语句,调用Exception的构造方法即可。自定义异常时,如果该异常的发生,无法在继续进行运算,就让自定义异常继承RuntimeException。
自定义了异常后,需要用到throw关键字,throw关键字用于在方法中声明抛出异常的实例对象,其语法格式如下:
throw Exception 异常对象
定义类继承Exception或者RuntimeException
为了让该自定义类具备可抛性。
让该类具备操作异常的共性方法。
当要定义自定义异常的信息时,可以使用父类已经定义好的功能。
异常异常信息传递给父类的构造函数。
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装。
继承Exception原因
异常体系有一个特点:因为异常类和异常对象都被抛出。
他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。
throws和throw的区别
throws使用在函数上。throw使用在函数内。
throws后面跟的异常类。可以跟多个,用逗号隔开。throw后跟的是异常对象。
注:当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,都在编译失败。RuntimeException除外。也就说,函数内如果抛出的RuntimeExcpetion异常,函数上可以不用声明。
异常在子父类覆盖中的体现
1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3.如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类方法发生了异常。就必须要进行try处理,绝对不能抛。