《java语言基础教程》(朱福喜)
p296
Console 是 final 类呀 怎么可以坐父类呢?
public class ShortStringReader extends Console {
private final static int MAX = 10;
public ShortStringReader() throws LongStringException{
// TODO Auto-generated constructor stub
if(super.readString().length() <= MAX)
return super.readString();
else
throw new LongStringException("String to long. MAX:" + MAX);

}
}p300在Quotient()中已经catch到了ArithmeticException 干吗还throws ArithmeticException 呢public class Main {
static void Quotient(int n, int d){// throws ArithmeticException {
try {
System.out.println(n/d);
} catch (ArithmeticException e) {
System.out.println(e);
}
}
public static void main(String[] args) {
int numer = 10;
int denom = 0;
Quotient(numer, denom);
}
}

解决方案 »

  1.   

    第一个你确定是java.io.Console,而不是自己定义的类?没有这本书,你把完整代码发上来
    第二个的确不需要throws ArithmeticException
      

  2.   

    第一个同意2楼
    第二个catch了就不能再扔出来吗 catch到再往外扔
      

  3.   

    没错,不过楼主的第二个代码中catch了就直接处理了,所以没必要加了
      

  4.   

    throws ArithmeticException只是声明异常而已
      

  5.   

    Console 不是 C# 里的吗
    Java里没这个的, 估计是作者自定义的吧
    第2个确实多余,不过声明不会报错的
      

  6.   

    public final class Console extends Objectimplements Flushable这是JDK API 1.6.0里面 Console 的定义。
      

  7.   

    谢谢指点
    好久没碰Java了  呵呵
      

  8.   

    为什么try...catch就不能throws?有这么说的吗?
      

  9.   

    不是不能,如果在try..catch中已经处理了这个异常,并且又没有向外抛出,那么没有必要throws,要写也没问题
      

  10.   

    catch (ArithmeticException e) {
                System.out.println(e);
    }
    已经处理 e 了,ArithmeticException 根本抛不出来。
    除非这样
    catch (ArithmeticException e) {
                System.out.println(e);
    throw e;
    }
    不过
    // throws ArithmeticException
    不是已经注释掉了么?第一个的话,Console应该不是java.io.Console
    我看到的 java.io.Console 是jdk 1.6的。
    而且,上面的Console调用了super.readString();
    可是java.io.Console根本没有readString()这个方法。
      

  11.   

    对啊 既然是final 为什么还可以继承?
      

  12.   

    Console应该是作者自定义的,比如think in java里就有这样的用法,作者自定义了一个Console类在工具包里
      

  13.   

    恩 今天看了他的io一章 Console 是作者自己定义的
    第二个 看来是作者画蛇添足了