class test throws IOException(){}
解决方案 »
- 学习java
- 求输出1000以内的奇数
- 30分求教下面几行代码的使用方法
- 人背连装jdk也会卡你
- 超级简单的问题!!
- 比尔-盖茨致珠海南方软件园员工的黄金准则
- 关于ConsoleReader.java
- 今天学到JAVA的"例外处理"这一章,觉得很难,请高手介绍学习经验
- 50分!请教有关JB的几个简单问题?
- 我用JBUILDER作的JPUPUPMEUN show(jpane,getx,gety) 的显示位置老在鼠标下一大截,在JPANE的左上角击鼠标右键出现多余显示
- 我用这样的方法从ftp站点下载文件,为什么有问题?
- 在装JBuilder4后第一次运行程序时,弹出来的那一个窗口(即Runtime properties),有兄弟一定要救我!谢谢了。
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 }
在下补充一点:throws的应用场合。如果在某个方法中throw了一个异常,但是又不想在该方法中处理的话,就可以再次抛出(throws),让调用它的方法来处理。调用它的方法如果觉得可以处理的话,就catch,否则可以再次抛出(throws),直到有方法处理为止。如果一直到main方法都进行抛出而没有处理的话,编译正确,但运行会产生异常。
由此,应当不难看出throw和throws的区别了吧?