throws是在方法后面用,后面可以跟多个异常类throw是在方法内里用,后面一次只能跟一个异常类但是都是抛,感觉没什么区别啊比如public void play()throws Exception{   //这个也是抛给别人
//省略代码
}public void play()throws Exception{   //这个也是抛给别人
throw new Exception
}
我感觉throw有的功能,throws都有了,那为什么要创造2个功能一样的东西出来?有一个抛的就行,整俩一样的抛作甚?再说了,你如果不想抛,可以自己处理,用try-catch就搞定。懒得处理,就用throws抛出去就行了。那还要throw有什么用?有人说throw new Exception("我可以自定义信息啊")可以自定义信息,那在try-catch里的catch处理块里 你完全可以System.out.println("我这里也可以自定义信息啊");
这不效果也一样嘛。还有人说我可以加if判断语句,判断输入年龄是不是没超过100岁,然后配合throw使用,
那我完全可以if判断语句判断年龄,如果年龄不符合,就System.out.println("你输入的年龄不符")
这样if和try-catch也可以啊,而且效果和用throw new Exception("你输入的年龄不符")是一样的。
所以异常我感觉就2,要不你处理,要不你抛!但是现在整2个抛,throw和throws,不太明白都是抛有什么不同?既然throws能抛一个,或者多个,那还要throw只能抛一个的不就没意义了吗?

解决方案 »

  1.   

    throws语句   
      throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种
    异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成
    员函数中抛出的异常的类型。如果异常的类型是Error或
    RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序
    的正常部分中是不期待出现的。 如果你想明确地抛出一个
    RuntimeException,你必须用throws语句来声明它的类型。  throw语句   
      throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后
    立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能
    在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
      

  2.   

    区别:
    throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。此外throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。简单的区别
    throws:将异常声明但是不处理
    throw:就是自己进行异常处理
      

  3.   

    实现多层架构是,throws和throw的区别还是蛮大的.如果是模型层出了一场,但是一场不需要模型层来处理,而是由控制器(业务逻辑层来)处理(我讲的是MVC开发模式).就需要把异常抛出来,由业务层来捕异常,来处理异常
      

  4.   

    throws是声明方法的时候用,说明这个方法可能会抛出一个异常,当用这个方法的时候,需要try, catch. throw 是用来抛出一个异常的实例. 如果在调用一个会抛出异常的方法的时候,调用者不想处理这个异常,也可以抛出去给上一级的调用方法public class myExceptionTest{
    void mymethod throws myException{ if isWrong(){
      throw myException("Something wrong");
    }/* 如果main不想处理这个异常, 也可以抛出*/
    /* public static void main(String[] args) throws myException */
    public static void main(String[] args){
     myException me = new myException();
     try{
       me.mymethod();
    }catch(Myexception ex){
    }