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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM王琦 中级黑马   /  2013-3-2 12:12  /  1860 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 [野狼]~@ 于 2013-3-2 18:20 编辑

异常抛出关键字throws和throw有什么区别,混淆搞不撑腰。
什么时候用throw什么时候用throws求高人解释一下。

评分

参与人数 1技术分 +1 收起 理由
郭孟涛 + 1 throw手动指定抛出某个异常,throws抛出所.

查看全部评分

4 个回复

倒序浏览
本帖最后由 付玉光 于 2013-3-2 12:31 编辑

②throw 使用在函数内,用来抛出异常对象,throw后跟的是异常对象,

    它下面通常是不能再有其它执行语句的。

①throws 使用在函数(方法)上,throws后面跟的是异常类,可以跟多个,用逗号隔开,

它抛出的异常表:该代码有可能出问题也有可能不出问题,这取决于你传的参数,

(当方法上抛出了该异常)如果传入的参数没引发异常,程序正常执行,如传的参数引

发了异常则程序中断,后边的代码不会在执行了。(当在调用处try了)若传入的参数可引

发异常,则程序也会执行到其它下面的代码。

希望对你有帮助{:soso_e100:}
回复 使用道具 举报
区别一:              
throw 是语句抛出一个异常;throws 是方法抛出一个异常;               
throw语法:throw <异常对象>               
在方法声明中,添加throws子句表示该方法将抛出异常。               
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]            
  其中:异常类可以声明多个,用逗号分割。
区别二:         
throws可以单独使用,但throw不能;  
区别三:            
throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。
回复 使用道具 举报
throws等于是告诉编译器,你的方法可能会出现什么异常,到底会不会出现,什么时候出现,你不知道,你只是跟编译器打声招呼,告诉它可能有问题,到时真出问题了,也别紧张;它是用在函数开头的,也就是函数开始之前就要声明了。
throw就是真的要抛出一个异常实体,等于是跟编译器说,我这里有个异常(与上面的区别是,这个异常是你确切知道是什么异常),你已经神机妙算的知道了这里肯定会发生这个问题,只是你不想自己动手用try{} catch{}处理(或者不知道怎么处理),所以你就要把异常扔出去,让其他使用你这个方法的人处理这个问题去。它是用在函数体中的;
请看下面的代码实例

class Math
{
    public int div(int i,int j) throws Exception   //本方法中不处理异常
    {
         int temp = i / j;  //此处有可能产生异常
         retrun temp;
    }
}

public class ThrowDemo
{
     public static void main(String args[])
     {
           Math m = new Math();
           try        //因为有throws,不管是否有异常,都必需处理
            {
                System.out.println(m.div(10,2));
            }
            catch(Exception e)  //如果有异常,在此处捕捉
            {
                System.out.println(e); //打印异常
            }
     }
}

2.throw,可以直接使用throw抛出一个异常,比如
public class ThrowDemo
{
     public static void main(String args[])
     {
             try      
            {
               throw new Exception("抛出自己的异常");   //自己抛出异常
            }
            catch(Exception e)
            {
                System.out.println(e); //打印异常
            }
     }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
张豪杰 发表于 2013-3-2 14:39
throws等于是告诉编译器,你的方法可能会出现什么异常,到底会不会出现,什么时候出现,你不知道,你只是跟 ...

明白了,说的很形象。谢谢:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马