class test throws IOException(){}

解决方案 »

  1.   

    throw语 句 用 来 明 确 地 抛 出 一 个“ 异 常”。 首 先, 你 必 须 得到 一 个Throwable的 实 例 的 控 制 柄, 通 过 参 数 传 到catch子 句, 或者 用new操 作 符 来 创 建 一 个。 下 面 是throw语 句 的 通 常 形 式。 throw ThrowableInstance; 程 序 会 在throw语 句 后 立 即 终 止, 它 后 面 的 语 句 执 行 不 到,然 后 在 包 含 它 的 所 有try块 中 从 里 向 外 寻 找 含 有 与 其 匹 配的catch子 句 的try块。 下 面 是 一 个 含 有throw语 句 的 例 子。 class ThrowDemo { 
       static void demoproc() { 
          try { 
             throw new NullPointerException("de3mo"); 
          } catch(NullPointerException e) {
             System.out.println("caught inside demoproc"); 
             throw e; 
           }
       }
       public static void main(String args[]) { 
          try { 
            demoproc(); 
          } catch(NullPointerException e) { 
            system.out.println("recaught: " + e);
          }
       } 
    }  throws语 句 
    throws用 来 标 明 一 个 成 员 函 数 可 能 抛 出 的 各 种“ 异 常”。对 大 多 数Exception子 类 来 说,Java 编 译 器 会 强 迫 你 声 明 在 一个 成 员 函 数 中 抛 出 的“ 异 常” 的 类 型。 如 果“ 异 常” 的 类 型是Error或 RuntimeException, 或 它 们 的 子 类, 这 个 规 则 不 起 作 用,因 为 这 ?copy; 在 程 序 的 正 常 部 分 中 是 不 期 待 出 现 的。 如 果你 想 明 确 地 抛 出 一 个RuntimeException, 你 必 须 用throws语 句 来声 明 它 的 类 型。 这 就 重 新 定 义 了 成 员 函 数 的 定 义 语 法: type method-name(arg-list) throws exception-list { } 下 面 是 一 段 程 序, 它 抛 出 了 一 个“ 异 常”, 但 既 没 有 捕捉 它, 也 没 有 用throws来 声 明。 这 在 编 译 时 将 不 会 通 过。 class ThrowsDemo1 { 
        static void procedure( ) [ 
           System.out.println("inside procedure");
           throw new IllegalAccessException("demo");
        } 
        public static void main(String args[]) { 
            procedure( ); 
        }
    } 为 了 让 这 个 例 子 编 译 过 去, 我 们 需 要 声 明 成 员 函 数procedure抛出 了IllegalAccessException, 并 且 在 调 用 它 的 成 员 函 数main里 捕捉 它。 下 面 是 正 确 的 例 子: class ThrowsDemo { 
        static void procedure( ) throws IllegalAccessException { 
            System.out.println("inside procedure"); 
            throw new IllegalAccessException("demo"); 
        }
        public static void main(String args[]) {
            try {
                procedure( );
            } catch (IllegalAccessException e) {
                System.out.println("caught " + e); 
            }
        }
    } 下 面 是 输 出 结 果: C:\>java ThrowsDemo inside procedure caught java.lang.IllegalAccessException: demo } 
      

  2.   

    panq兄说得对。
    在下补充一点:throws的应用场合。如果在某个方法中throw了一个异常,但是又不想在该方法中处理的话,就可以再次抛出(throws),让调用它的方法来处理。调用它的方法如果觉得可以处理的话,就catch,否则可以再次抛出(throws),直到有方法处理为止。如果一直到main方法都进行抛出而没有处理的话,编译正确,但运行会产生异常。
    由此,应当不难看出throw和throws的区别了吧?
      

  3.   

    有没有回答上一个问题?driver,drivermanager 生成connection的区别?