黑马程序员技术交流社区

标题: 自定义异常 [打印本页]

作者: linder_qzy    时间: 2015-3-10 16:01
标题: 自定义异常
项目中会出现一些Java中没有定义的异常,对于这些异常可以按照Java对问题封装的思想将特有问题进行自定义异常封装。
自定义异常必须继承Exception。

下边写一个例子说明如何自定义异常。
  1. class FuShuException extends Exception
  2. {
  3. /*
  4. 如何定义异常信息:因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时将异常信息传递给父类通过super语句,
  5. 那么就可以直接通过getMessage()方法获取自定义的异常信息。
  6. */
  7.         private int value;
  8.         FuShuException(String msg,int value)
  9.         {
  10.                 super(msg);
  11.                 this.value = value;
  12.         }
  13.         public int getValue(){
  14.                 return value;
  15.         }
  16. }
  17. /*
  18. 当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。要么在内部try catch处理,要么在函数上声明让调用者处理。
  19. 一般情况下,函数内出现异常,函数上需要声明。
  20. throw和throws的区别:
  21. 1.throw使用在函数内,后跟异常对象;
  22. 2.throws使用在函数上,后跟异常类,可以是多个,用逗号隔开。
  23. */
  24. class Demo
  25. {
  26.         int div(int a,int b)throws FuShuException
  27.         {
  28.                 if (b<0)
  29.                         throw new FuShuException("除数为负数了!!",b);//手动通过throw关键字抛出异常
  30.                 return a/b;
  31.         }
  32. }
  33. class DemoExceptionUserDefined
  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 (FuShuException e)
  44.                 {
  45.                         System.out.println("负数为"+e.getValue());
  46.                         e.printStackTrace();//打印异常名称:异常信息:异常出现的位置(其实JVM默认的异常处理机制就是调用printStackTrace跟踪异常信息)
  47.                 }
  48.                 System.out.println("over!");
  49.         }
  50. }
  51.         /*
  52.          * 输出结果
  53.          * 错误的除数为-1
  54.         heima.day01.FuShuException: 除数为负数了!!
  55.                 at heima.day01.DemoExceptionUserDefined.div(DemoExceptionUserDefined.java:30)
  56.                 at heima.day01.DemoExceptionUserDefined.main(DemoExceptionUserDefined.java:19)
  57.         over!!
  58.          */
复制代码









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2