因为项目中会出现特有的问题
而这些问题并未被JAVA所描述并封装对象
所以对于这些特有的问题可以按照JAVA对问题封装的思想
将特有问题,自定义的异常封装
自定义异常
需求:在下程序中,对于除数是负数,也视为错误
那么对于这个问题要进行自定义的描述
当在函数内部出现throw抛出异常对象,那么就必须给出对应的处理动作
1 在内部try catch处理
2 在函数上声明让调用者处理
一般情况下,函数内出现异常,函数上需要声明
发现打印的结果中只有异常名称,没有异常信息
因为自定义的异常并未定义异常信息
如何定义异常信息呢?
因为父类已经把异常信息的操作都完成了
所以子类 只要在构造时,将异常信息传递给父类通过super语句
那么就可以直接通过getMessage方法获取自定义的异常信息
自定义异常:
必须是自定义类继承Exception
为什么要继承Exception
异常体系有一个特点:因为异常类和异常对象都需要被抛出
他们都具备可抛性,这个可抛性是Throwable体系中的独有特点
只有这个体系中的类和对象才可以被throws和throw操作
throws和throw的区别
throws使用在函数上,后面跟的异常类,可以跟多个,用逗号隔开
throw使用在函数内,后面跟的是异常对象
1 class NagativeException extends Exception 2 { 3 private int value; 4 NagativeException() 5 { 6 super(); 7 } 8 NagativeException(String msg) 9 { 10 super(msg); 11 } 12 NagativeException(String msg,int value) 13 { 14 super(msg); 15 this.value = value; 16 } 17 18 public int getValue() 19 { 20 return value; 21 } 22 } 23 24 class Demo 25 { 26 int div(int a,int b)throws NagativeException 27 { 28 if(b < 0) 29 throw new NagativeException("出现除数是负数的情况");//手动通过throw关键字排除一个自定义的异常对象 30 return a/b; 31 } 32 } 33 class ExceptionDemo 34 { 35 public static void main(String[] args) 36 { 37 Demo d = new Demo(); 38 try 39 { 40 int x = d.div(4,-1); 41 System.out.println("x="+x); 42 } 43 catch(NagativeException e) 44 { 45 System.out.println(e.toString()); 46 System.out.println("除数出现负数"); 47 } 48 System.out.println("Over"); 49 } 50 }
Happy coder
浙公网安备 33010602011771号