作者TonyQ (骨头)
看板java
标题Re: [问题] IO处理
时间Wed Dec 12 19:03:09 2007
※ 引述《inthehope (小希)》之铭言:
: 请问为什麽一定要加 throws IOException 呢?
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 122.126.46.105
: 推 superlubu:因为 FileWriter 会 throw IOException 啊 ( ̄□ ̄|||)a 12/11 08:14
: 推 PsMonkey: ^可能 12/11 11:37
: 推 H45: ^宣告 12/11 12:21
: 推 TonyQ: 因为写程式的人懒得考虑IOException的状况啊~ 12/11 12:22
: → inthehope:想问的是:为什麽不加throw IOException 就编释不过呢 12/12 15:51
底下是经验谈,因为我大一的时候也问过教授这个问题-3-
因为设计的人觉得你一定要考虑这个Exception
比方说你的那个FileWriter可能会有FileNotFoundException
或者是档案状况唯读等等的状况,而且这会影响到你後续程式的运作,
所以你必须考虑进去。
(虽然大部分都不会,特别是BufferedReader大家应该都没在处理的吧XD)
这个就叫Checked Exception 在compile时期就会提示你要处理的。
throws的宣告则是把它在丢给上一层给main处理,
它的原型大概是
public void xxx() throws IOException
{
/* do somthing... */
if(xxxx) /* do somthing... */
else
throw new IOException("FileNotFound...");
}
处理的时候要搭配
try{
xxx ();
}catch(IOException e){
/*do something while exception occur */
}
但是懒得处理的人就说,我不想管,这问题问我老大
就把它throws 到上一层去,如果在main,
throws掉的Exception就当成Error,发生时直接终止程式并显示错误讯息。
当然有些时候也会有所谓的RuntimeException
比方说
"".charAt(0) -> String index Out of range
或者是 int k[]=new int[2] ;
k[4]=2; -> Out of bound
这类就是设计者觉得不应该是你需要每次检查的错,
或者是 5/0 之类的 -3-
--
总之,这是一种确保程式可以更完善的方式就是了。XD
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 语 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.236.206
※ 编辑: TonyQ 来自: 218.160.236.206 (12/12 19:06)
1F:推 orc1424:不强迫要求的 写了拿来抓bug也很有用 12/13 14:37
2F:推 inthehope:感谢大大的回答 :) 12/14 00:30