使用throws语句

在某些情况下,如果一个方法产生自己不做处理的异常,他就必须在throws语句中声明该异常.下面是包含throws语句的方法的基本形式:
ret-type methName(param-list) throws except-list
{
    //body;
}
此处,except-list是一个由逗号分隔的异常列表,这些异常可能是由某个方法抛到外层的.
你可能会想为何在前面的一些示例中没有为抛出异常的方法指定throws语句.答案就是,凡是Error或RuntimeException子类的异常都不必在throws列表中指定.Java简单的假定一个方法可以抛出一个这样的异常.所有其他类型的异常都需要声明.如果没有,就会引起编译时错误.
实际上,我们已经看到了throws语句的一个示例,回忆一下,当执行键盘输入时,需要在main()中添加如下语句:
throws java.io.IOException
现在可以理解为什么了吧,一条输入语句可能产生一个IOException异常,而此时我们无法处理该异常.因此要从main()抛出这个异常,而且需要这样来指定异常了解异常之后,就可以轻松的处理IOException异常了.
我们看一下处理IOException异常的示例.该例创建一个名为prompt()的方法,该方法显示一条提示消息,然后从键盘读取一个字符.因为正在执行输入,所以可能会发生IOException异常.然而prompt()方法自己不能处理IOException异常,所以他使用了一条throws语句.这就意味着调用prompt()的方法必须处理该异常.本例中,调用prompt()的方法是main(),那么需要他处理错误:
public class test2
{
    // @param args
    public static void main(String args[])
    {
     char ch;
     
        try {
            ch = Rethrow.inputChar("input  something");
        }catch(java.io.IOException exc) {
            System.out.println("error");
        }
    }
}
class Rethrow
{
    public static char inputChar(String str)
    throws java.io.IOException
    {
        System.out.println(str+":");
        return (char)System.in.read();
    }
}
还有相关的一点是,注意IOException被其包名Java.io完全限定.