有关例外的问题,帮忙来看看!(50分)

  • 主题发起人 主题发起人 strongboy
  • 开始时间 开始时间
S

strongboy

Unregistered / Unconfirmed
GUEST, unregistred user!
import java.io.IOException;
public class ThrowsDemo {
static void throwMethod() {
System.out.println("Inside throwMethod.") ;
throw new IOException("demo");
}
public static void main(String args[]) {
try{
throwMethod();
}catch (IOException e) {
System.out.println("Caught:"+e);
}

}
}
为什么编译时总报错:未报告的例外 java.io.IOException;必须被捕获或将异常抛出。
我不是把throwMethod放在try中调用的吗??
 
throwMethod没定义,应该:
static void throwMethod() throws IOException //这里加点东西,表示里面会抛出异常
{
................
}
 
但是我也见过方法中有throw new ***,但在方法声明部分没有throws语句的情况呀!!!
 
你说的可能有两种情况:
1,那个throw出来的exceptioin在代码内就被catch了。
2,throw出来的exceptioin是RuntimeException的子类,即属于运行时意外,这是不需要
直接catch的。
关于运行时exception,可以看一下tij中的有关章节。
 
例子如下:
class Unchecked {
public static void main(String args[]) {
try{
method();
}catch(Exception e) {}
}
static void method() {
try {
wrench();
System.out.println("a");
}catch(ArithmeticException e) {
System.out.println("b") ;
}finally{
System.out.println("c");
}
System.out.println("d");
}
static void wrench() {
throw new NullPointerException();
}
}
从wrench()中抛出的例外在方法声明部分为什么没用throws;
 
NullPointerException
继承于
RuntimeException
 
是的,如Pipi所说。
其实这类问题看一下jdk api就明白了。所有继承于RuntimeException的意外都无须catch,
因为那是可以也是应该通过你的编程来避免的。
同时除了在一些底层库以外,最好都不要抛出RuntimeException(如nullpoint)。
当然示例除外,呵呵。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
883
SUNSTONE的Delphi笔记
S
I
回复
0
查看
621
import
I
后退
顶部