lsbwahaha
java解惑中的—异常,简单程序,但容易错
下面三个程序每一个都会打印些什么? 不要假设他们都可以编译通过:
第一个程序:
import
java.io.IOException;
public
class
Arcane1
{
public
static
void
main(String[] args)
{
try
{
System.out.println(
"
hello lsbwahaha
"
);
}
catch
(IOException e)
{
System.out.println(
"
I've never seen println fail!
"
);
}
}
}
第二个程序:
1
public
class
Arcane2
{
2
public
static
void
main(String[] args)
{
3
try
{
4
//
you have noting nice to say
5
}
catch
(Exception e)
{
6
System.out.println(
"
this can't happen
"
);
7
}
8
}
9
}
第三个程序:
interface
Type1
{
void
f()
throws
CloneNotSupportedException;
}
interface
Type2
{
void
f()
throws
InterruptedException;
}
interface
Type3
extends
Type2,Type1
{}
public
class
Arcane3
implements
Type3
{
public
void
f()
{
System.out.println(
"
hello lsbwahaha
"
);
}
public
static
void
main(String[] args)
{
Type3 t3
=
new
Arcane3();
t3.f();
}
}
分析第一个程序:
看起来应该会打印出hello lsbwahaha,这个程序不能编译,因为pringln犯法没有会抛出任何受检查异常,
而IOException 却正是一个受检查异常。
语言规范中描述:如果一个catch子句要捕获一个类型为E的受检查异常,而其相对应的try子句不能抛出E的某种子类型的异常,
那么这就是一个编译期错误。
分析第二个程序:
基于第一个程序,那么第二个程序应该不可以编译,但是它却可以。它之所以可以编译,是因为它唯一的catch子句检查了Exception
捕获Exception或Throwable的catch子句是合法的,不管于其相对应的try子句的内容为何。 这个程序什么都不会打印。
分析第三个程序:
看起来它也不能编译。 如果它能编译,那是为什么呢?
结果居然能编译通过。。。。 这个到底是为什么呢?、、、、、、、
Type3 中 因为每一个接口都限制了方法f可以抛出的受检查异常集合。一个方法可以抛出的受检查异常集合是它所适用的所有类型声明
要抛出的受检查异常交集,而不是并集。
posted on 2009-04-07 20:51
胡鹏
阅读(191)
评论(0)
编辑
收藏
所属分类:
java基础
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
java的4种Reference探讨
理解java中的ThreadLocal
Concurrent学习—Executor框架
TrueZIP使用过程中遇到的问题记录
antlr简介
责任链中:但个中的处理
用linkList实现LRU算法
java collection framework 的一些比较使用的记录
读《effective java》第二版,实用一,遇到多个构造器参数时要考虑用构造器
java中关键字volatile的含义(转)
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2009年4月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
统计
随笔 - 93
文章 - 0
评论 - 48
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
android(4)
(rss)
hibernate(9)
(rss)
J2EE (10)
(rss)
java基础(32)
(rss)
js,html,css(10)
(rss)
linux(1)
(rss)
spring(2)
(rss)
工具 and 软件(9)
(rss)
敏捷(3)
(rss)
数据库(6)
(rss)
数据结构(6)
(rss)
生活记事(5)
(rss)
设计模式(2)
(rss)
读《effective java》笔记(3)
(rss)
随笔档案
2012年11月 (1)
2012年10月 (2)
2012年9月 (1)
2012年3月 (1)
2012年2月 (1)
2011年12月 (1)
2011年11月 (1)
2011年10月 (4)
2011年7月 (1)
2011年6月 (1)
2011年5月 (2)
2011年3月 (1)
2011年1月 (2)
2010年12月 (1)
2010年11月 (4)
2010年10月 (2)
2010年8月 (2)
2010年7月 (1)
2010年2月 (2)
2009年12月 (3)
2009年11月 (5)
2009年8月 (1)
2009年7月 (5)
2009年6月 (1)
2009年5月 (7)
2009年4月 (39)
agile
敏捷开发中高质量 Java 代码开发实践
搜索
最新评论
1. re: Eclipse启动无响应 停留在Loading workbench状态
非常有用,感谢分享
--萨瑟兰
2. re: Eclipse启动无响应 停留在Loading workbench状态[未登录]
果然靠谱
好使
谢谢博主
--Gavin
3. re: Eclipse启动无响应 停留在Loading workbench状态
遇到同样的问题,真的可以解决
--861625788@qq.com
4. re: java获取qq邮箱中的好友列表
楼主,可以给我发一份源码吗?最近在弄这个总是搞不好,想参照一下 谢谢
945982766@qq.com
--aixiaoyan1111
5. re: 可输入的下拉框222ComboBox(Select加Input)
222
--22
阅读排行榜
1. HTML——网页中嵌入 media play 和 real play 代码(12898)
2. js——网页全屏显示(9210)
3. Eclipse启动无响应 停留在Loading workbench状态(6432)
4. java中创建自己的Tuple(6394)
5. 可输入的下拉框ComboBox(Select加Input)(5080)
评论排行榜
1. java获取qq邮箱中的好友列表(23)
2. Eclipse启动无响应 停留在Loading workbench状态(7)
3. 玩个游戏:下一周如果每天有30分钟时间有空可以做什么(6)
4. 在继承中的 静态方法调用注意(6)
5. java容器学习(2)