Re: [問題] IO處理

看板java作者 (骨頭)時間18年前 (2007/12/12 19:03), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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
不強迫要求的 寫了拿來抓bug也很有用
12/13 14:37, 1F

12/14 00:30, , 2F
感謝大大的回答 :)
12/14 00:30, 2F
文章代碼(AID): #17Nx_lzy (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
5
6
完整討論串 (本文為第 2 之 2 篇):
問題
2
2
問題
5
6
文章代碼(AID): #17Nx_lzy (java)