jinfeng_wang

G-G-S,D-D-U!

BlogJava 首页 新随笔 联系 聚合 管理
  400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

上篇:http://www.blogjava.net/jinfeng_wang/archive/2006/05/11/45726.html

先来回复两个回帖:
"你可以把IO等异常转化成你类库中中定义的异常。当然你定义的异常是Checked Exception 还是 UnChecked Excetion 那你自己定了。 "

假设我按照这条建议去做了,那么我可以抛出XXXLibException。假设我的异常采用的是CheckedException,那么客户程序员可以捕捉它。但是对于不同的出错原因(例如不同的原因,包括无权限、硬盘满、U盘被拔了等等,导致无法正常写日志文件),程序都是捕捉XXXLibException,那么客户程序员就无法根据不同的异常去做相应的处理(例如提示用户修改权限、直接启用备用目录,直接退出程序)。总之,如果异常类型不同,客户程序可以根据“异常类型”做不同的工作(编译器+工具可以实现自动代码生成);但是如果全部合并为一个异常,那么客户程序只能根据“ExceptionMessage”尝试着做不同的工作(恰恰目前没有办法完成自动编码)。



"要知道 JDK 的 FileWriter 是可以抛出 IOException 的子类的,只要文档足够详细,Java代码中也可以只去捕捉更明细的异常, 也可以就捕捉并重新抛出包装过的异常(甚至是RuntimException),除非呆板地去捕获每个异常,不然代码怎么会丑陋呢?"

RuntiomeException,也就是UncheckedException(类于.NET的Exception),它不会要求客户代码强行捕捉异常,据此我写了下面的一个程序:
private void button1_Click(object sender, System.EventArgs e)
  {
   throw new Exception("s");
  }
     我只试了.NET的程序,出现的界面大家自己试 。因为UncheckedException没有要求客户程序去捕捉(客户程序员不能自觉的发现库中抛出的各种异常),让最终用户直接面对这样的异常,是一个道德的事情么?

posted on 2006-05-12 20:21 jinfeng_wang 阅读(1274) 评论(2)  编辑  收藏 所属分类: javaview.Net

评论

# re: Checked Exception VS UnChecked Excetion (续) 2006-05-12 20:55 原创专栏 开源学习
但是对于不同的出错原因(例如不同的原因,包括无权限、硬盘满、U盘被拔了等等,导致无法正常写日志文件),程序都是捕捉XXXLibException
难道你的类库只写一个异常类吗?我指的可不是一个类库一个异常啊!
建议楼主看看jdk的源码吧!
看看spring怎么处理DAO出现的异常吧。我感觉比较经典。

http://static.springframework.org/spring/docs/1.2.x/reference/dao.html  回复  更多评论
  

# re: Checked Exception VS UnChecked Excetion (续) 2006-05-13 14:08 thinkbase
"因为UncheckedException没有要求客户程序去捕捉" ---- 照这么说, .Net 的异常不是全都是 UncheckedException 吗? 我说过可以抛出 RuntimeException, 可是我没有说你只需要使用一种 RuntimeException 啊, 如果 Java 开发人员希望以 .Net 的异常处理风格开发一个库, 他完全可以把抛出的异常都定义为 RuntimeException 的不同子类;

记住, 我们不仅可以使用现有的各种 Exception 类, 很多情况下我们还需要自己设计一个自定义 Exception 的层次结构哦.

上面那条评论提到的那个链接, 建议去看看.

BTW, 这么讨论下来, 我倒决定 Java 在这方面比 .Net 有更多选择 :)  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: