作者AmosYang (LetMeGoogleThatForYou)
看板java
标题Re: [J2SE] 请问delay的方法
时间Tue Oct 6 10:01:03 2009
※ 引述《AmosYang (LetMeGoogleThatForYou)》之铭言:
: 某些 exception 被划分在 checked exception 有他的理由; 这些理由通常难以一言道尽
: 只有亲身去多接触不同类型、规模的程式才会体会 :)
: 推 H45:sleep 被意外中断很容易修复,所以被包在 checked exception 10/05 16:02
: → AmosYang:无法理解 H45 推文里的逻辑… 10/06 08:09
: 推 H45:因为你说划分在 checked exception 的理由一言难尽,所以我就. 10/06 08:57
: → H45:用一言把 sleep 被划在 checked exception 的理由说完 :-) 10/06 08:58
这的确是用一言就说完了 :D 不过我真的不了解这一言里的逻辑
我从来没有想过把 "容易修复" 与 checked exception 背後的设计观放在一起看
所以很好奇;能否对 "很容易修复" 再进一步的解释?
所谓很容易是怎麽个容易法? "修复" 又是指怎麽个修法? (回去继续睡? XD)
我的看法是, sleep (及其他 Thread 相关的 method) 之所以会丢出一个
checked exception
是在利用 Java 这个语言提供的功能来把 multi-thread 程式
导向一个比较耐命 (robust? XD) 的 pattern
也就是在 compile time 就强制 programmer
仔细去想想要怎麽处理一个潜在的 InterruptedException
反过来想,如果 sleep (及其他 Thread 相关的 method) 丢的是 unchecked exception
一个 Runnable 放出去跑一跑,累了睡一觉等 CD 时被一个 unchecked exception 砸死
然後 unchecked exception 一路炸上去,最後整只 thread 炸掉炸得屍骨无存
这时候才开始知道什麽是写 multi-thread 程式的乐趣… XD
再从另一个角度来看,不管 try-catch 坦 checked exception 坦得再好,
总有一天,某个 Runnable 注定就是要被 unchecked exception 砸死的
(例如 IndexOutOfBoundException)
然而,如果因为被 unchecked exception 砸死再来怪 try-catch 没坦好
更甚者还有全盘否定 checked exception 背後设计观的
那…还是 SCJP 考一考就好了,尽量不要写真的 Java 程式吧 XD
再扯一个很远很远, C# 的例子, C# 里并没有 checked exception,
在设计能让第三方 plug-in code 相关的东西时就要小心,
第三方的 plug-in code 有心攻击的话可以藉由丢出 exception 试图改变 code flow
当然这解法很简单,把第三方 plug-in code 用 try-catch 包起来就可以
只是有的时候会忘记,如果能藉由语言本身的功能来强制一些 design pattern
有时的确蛮有用的
回到原题,
"为什麽 exception X 是 checked exception?"
"为什麽 exception Y 是 unchecked exception?"
"为什麽 method A 丢 checked exception 而 method B 丢 unchecked exception?"
我仍然只能说这背後的原因难以一言尽之
(开始跳针 XD)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 65.87.177.87
1F:推 H45:可以等我研究透彻之後再给你一个完整的回覆吗 :) 10/06 10:11
https://www.youtube.com/watch?v=Z2q7JW9pBfQ#t=4m44s XD
研究透彻!? 你看到那个在啃 AoCP 的老头了吗?
他在13岁的时候方丈说要他把 CompSci 研究透彻才准出少林寺… XD
编辑加上一段话
这篇里 XD 好像用太多了… XD
※ 编辑: AmosYang 来自: 65.87.177.87 (10/06 10:52)
2F:推 PsMonkey:喔喔喔... 鸡排摊准备!! 10/06 10:27
3F:推 kimkao:忽然间觉得不可以尽信网站资源! 10/07 11:04
4F:→ kimkao:刚对indexOutOfBoundsException有疑虑!结果大陆某些网站 10/07 11:06
5F:→ kimkao:把这exception当成checked exception @@..没事还是动手try 10/07 11:08