我的理解:
  throw本质:在语句中手动抛出一个异常实例;
  throw语法:不可单独使用,要和try catch 配套,抛出到上一级;
  throws本质:在方法中声明回避异常;
  throws语法:可以单独使用,抛出到调用者;
我想问:
  throw与throws抛出的哪个要捕获,那个不要捕获,不捕获程序会终止吗;都是抛出到上一级的吗?
  
  java

解决方案 »

  1.   

    都需要到最后一层捕获处理,除了runtimeexception都会可以继续执行下去,但是对后边的影响就不知道了。
    throw手动抛出后,必须用throws在函数头声明一下。
      

  2.   

    检查性的异常都需要捕获处理, throw出了一个异常,可以马上用try catch捕获处理,也可以看在方法上用throws抛到调用者,调用者可以trycatch处理,也可以再throws到更高级的调用者。最终必须有一个trycatch来处理掉,所以throw和throws表现出来的只是一个传递关系,并不是捕不捕获的问题,检查性异常最终都是要捕获的
      

  3.   

     throw 是手动生成一个异常,就用在程序代码里。throws是用在方法声明的时候,是把异常丢给上一级处理。 这两个很好理解啊
      

  4.   

    throw的地方你要么就try catch捕获,要么在方法声明行里throws抛出。 throws抛出的异常的上一级也得对抛出的异常处理
      

  5.   

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

  6.   

    说的没错哦~比如你在创建一个新的socket实例的时候,系统会强制要求你将其放置于try模块中,这就代表这其构造性使用了throws去修饰了,上面说的很清楚了~