在本程序中,对于除数是-1,也视为是错误的,是无法进行运算的。
那么就需要对这个问题进行自定义的描述。
当在函数内部出现了throw抛出异常对象,那么,就需要给对应的处理动作。
要么在内部try catch处理;要么在函数上声明让调用者处理。
一般情况下,函数内出现异常,函数上需要声明。
如何快速定义异常信息呢?
因为父类中已经把异常信息的操作都完成了。
所以子类只要在构造时,通过super语句将异常信息传递给父类。
那么就可以直接通过getMessage方法获取自定义异常信息了。
自定义异常:
必须是自定义类继承Exception。
继承Exception原因:
异常体系有一个特点:因为异常类和异常对象都被抛出。
他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。
throw和throws的区别:
(1)throws使用在函数上。
throw使用在函数内部。
(2)throws后面跟的是异常类,可以跟多个异常类,异常类之间用逗号隔开。
throw后面的跟的是异常对象。
class FuShuException extends Exception { /*private String msg; FuShuException(String msg) { this.msg=msg; } public String getMessage() { return msg; }*/ int num; FuShuException() { super();//空参数的构造函数。 } FuShuException(String name,int num) { super(name);//通过super语句将异常信息传递给父类 this.num=num; } public void show() { System.out.println("除数的值:"+num); } } class Demo { public int function(int a,int b) throws FuShuException //这个函数有可能会出现异常,某个函数在调用该函数时需要抛出异常(throws)或对异常进行处理(try...catch)。 { int[] arr=new int[a]; if (b<0) { throw new FuShuException("除数出现了小于零的情况",b);//如果满足条件则抛出异常信息。 } return a/b; } } class ExceptionClassDemo1 { public static void main(String args[]) //throws FuShuException ——这是抛出异常,即编译时不会报错,在运行时虚拟机会提示异常信息。 { Demo de=new Demo(); //下面的代码对异常进行处理。 try { int result=de.function(5,-1); System.out.println(result); } catch (FuShuException e) { System.out.println(e.getMessage()); e.show(); } /* int result=de.function(5,-1); System.out.println(result); */ } }
时间: 2024-10-10 16:33:27