Re: [問題] IO處理
※ 引述《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)
推
12/13 14:37, , 1F
12/13 14:37, 1F
推
12/14 00:30, , 2F
12/14 00:30, 2F
討論串 (同標題文章)