今天看到书中两个疑似错误,贴出来 ,大家讨论讨论

mingchaoyan 2010-05-05 09:59:15


《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);
}
}
...全文
187 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingchaoyan 2010-05-08
  • 打赏
  • 举报
回复
恩 今天看了他的io一章 Console 是作者自己定义的
第二个 看来是作者画蛇添足了
justlearn 2010-05-07
  • 打赏
  • 举报
回复
Console应该是作者自定义的,比如think in java里就有这样的用法,作者自定义了一个Console类在工具包里
SuperBoo 2010-05-07
  • 打赏
  • 举报
回复
第二个 无疑是画蛇添足
mijunqiang 2010-05-07
  • 打赏
  • 举报
回复
继续保持关注。
mingchaoyan 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 abc130314 的回复:]

catch (ArithmeticException e) {
System.out.println(e);
}
已经处理 e 了,ArithmeticException 根本抛不出来。
除非这样
catch (ArithmeticException e) {
System.out.println(e);
throw e;
}
不……
[/Quote]
第一个 到底是不是自定义的, 有待我再仔细看看(看他io这一章的内容)

第二个 注释是我加的 原文没有的
z82364593110 2010-05-06
  • 打赏
  • 举报
回复
对啊 既然是final 为什么还可以继承?
abc130314 2010-05-06
  • 打赏
  • 举报
回复
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()这个方法。
wd9053 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hahaha666 的回复:]

为什么try...catch就不能throws?有这么说的吗?
[/Quote]
不是不能,如果在try..catch中已经处理了这个异常,并且又没有向外抛出,那么没有必要throws,要写也没问题
hahaha66 2010-05-06
  • 打赏
  • 举报
回复
为什么try...catch就不能throws?有这么说的吗?
keeya0416 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hardycheng 的回复:]
public final class Console extends Objectimplements Flushable

这是JDK API 1.6.0里面 Console 的定义。
[/Quote]
谢谢指点
好久没碰Java了 呵呵
BearKin 2010-05-06
  • 打赏
  • 举报
回复
发现错误报告给作者说不定有奖哦。。如果例子上的代码原封不动就是这样的。。
hardycheng 2010-05-06
  • 打赏
  • 举报
回复
public final class Console extends Objectimplements Flushable

这是JDK API 1.6.0里面 Console 的定义。

keeya0416 2010-05-06
  • 打赏
  • 举报
回复
Console 不是 C# 里的吗
Java里没这个的, 估计是作者自定义的吧
第2个确实多余,不过声明不会报错的
my6cncn 2010-05-05
  • 打赏
  • 举报
回复
throws ArithmeticException只是声明异常而已
wd9053 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wow415411408 的回复:]

第一个同意2楼
第二个catch了就不能再扔出来吗 catch到再往外扔
[/Quote]
没错,不过楼主的第二个代码中catch了就直接处理了,所以没必要加了
wow415411408 2010-05-05
  • 打赏
  • 举报
回复
第一个同意2楼
第二个catch了就不能再扔出来吗 catch到再往外扔
wd9053 2010-05-05
  • 打赏
  • 举报
回复
第一个你确定是java.io.Console,而不是自己定义的类?没有这本书,你把完整代码发上来
第二个的确不需要throws ArithmeticException

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧