RT,感谢!!

解决方案 »

  1.   

    throw 是个“动词”,紧接在try语句块之后。
    而throws 是“名词” ,用在函数方法名后function A () throws Exception e {}两者效果一样,均是处理异常的问题
      

  2.   

    throws是用来声明的, 加在方法声明的后面, 后面跟一个异常类的名字, 表示一般性动作而不是特指某一个动作.throw用来抛出实际的异常, 后面要跟一个异常对象(实例), 是一个实际的语句.
      

  3.   

    有 throw 的函数必须要声明 throws
    反过来就不是
      

  4.   

    我想问一下这个的处理次序:
    public class NeverCaught {
      
      static void f() {
        throw new RuntimeException("From f()");
      }
      static void g() {
        try
        {
         f();
         
         }
        catch(RuntimeException e)
        {
         e.printStackTrace();
         throw e;
         }
         finally
         {
          System.out.println("异常去死吧!");
          }
      }
      public static void main(String[] args) {
        g();
         }
    }
    谢谢了哈!!!
      

  5.   

    执行g()
    调用f()
    f抛异常
    g()catch f抛出的异常,打印异常堆栈,又抛出该异常
    调用finally,打印 “异常去死吧”程序结束
      

  6.   

    使用throws是来说明,当前的函数会抛出一个异常。
    在一般的情况下,你调用的一些函数会抛出一些异常。但是你又不想在当前的context中去处理它,就可以声明该函数会抛出该异常,这样你就不用去try-catch它了。当出现该异常该函数会抛出这个异常,让上一层的函数去处理。
    以我的理解,以下的处理意义不大:)
    public static h() throws
    {
        try
        {
            a.g();
        }
        catch(Exception e)
        {
            throw e;
        }
    }
    因为你没有对这个异常处理,而是简单的抛出了。
    而单纯的声明
    public static h() throws
    {
        a.g();
    }
    也会抛出这个异常