A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张宝 于 2013-3-16 18:07 编辑

在异常中有个throws意思是抛出异常,在自定义异常中又出现个throw,也是抛出异常,有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

3 个回复

倒序浏览
Throws在方法签名中使用,用于声明该方法可能抛出的异常。
Throw在函数内使用,用于抛出一个实际的异常。
回复 使用道具 举报
本帖最后由 HM刘博 于 2013-3-16 17:53 编辑

throws关键字通常应用在方法上,用来指定可能跑出的异常,多个异常要用逗号隔开,当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象
  1. class Demo
  2. {
  3.         int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException<FONT color=red>//在功能上通过throws的关键字声明了该功能有可能会出现问题</FONT>。
  4.         {

  5.                 int[] arr = new int[a];

  6.                 System.out.println(arr[4]);

  7.                 return a/b;
  8.         }
  9. }


  10. class  ExceptionDemo2
  11. {
  12.         public static void main(String[] args) //throws Exception
  13.         {
  14.                 Demo d = new Demo();
  15.                 try
  16.                 {
  17.                         int x = d.div(5,0);
  18.                         System.out.println("x="+x);
  19.                 }
  20.                
  21.                 catch (ArithmeticException e)
  22.                 {
  23.                         System.out.println(e.toString());
  24.                         System.out.println("被零除了!!");

  25.                 }
  26.                 catch (ArrayIndexOutOfBoundsException e)
  27.                 {
  28.                         System.out.println(e.toString());
  29.                         System.out.println("角标越界啦!!");
  30.                 }
  31.                 System.out.println("over");
  32.         }
  33. }
复制代码
throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。
  1. class FuShuException extends Exception
  2. {
  3.         private int value;

  4.         FuShuException()
  5.         {
  6.                 super();
  7.         }
  8.         FuShuException(String msg,int value)
  9.         {
  10.                 super(msg);
  11.                 this.value = value;
  12.         }

  13.         public int getValue()
  14.         {
  15.                 return value;
  16.         }

  17. }
  18. class Demo
  19. {
  20.         int div(int a,int b)throws FuShuException
  21.         {
  22.                 if(b<0)
  23.                         throw new FuShuException("出现了除数是负数的情况------ / by fushu",b);//<FONT color=red>手动通过throw关键字抛出一个自定义异常对象。
  24. </FONT>
  25.                 return a/b;
  26.         }
  27. }


  28. class  ExceptionDemo3
  29. {
  30.         public static void main(String[] args)
  31.         {
  32.                 Demo d = new Demo();
  33.                 try
  34.                 {
  35.                         int x = d.div(4,-9);
  36.                         System.out.println("x="+x);               
  37.                 }
  38.                 catch (FuShuException e)
  39.                 {
  40.                         System.out.println(e.toString());

  41.                         System.out.println("错误的负数是:"+e.getValue());
  42.                 }
  43.                 System.out.println("over");

  44.         }
  45. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马