作者ppgame (虎紋蜜瓜)
看板java
標題[問題] 為何輸出輸入需要拋出IOException異常?
時間Sat Feb 5 12:05:52 2022
想請問各位
為何在進行Input、Output的輸入輸出時
都要拋出異常才能運行呢?
碰到每份教材都說進行IO程式碼的時候
要不就拋出IOException,要不就try...catch...finally處理
拋出異常不是程式碼運行中出錯,為何繞過錯誤順利運行才拋出
為何IO正常運行也得要先拋出異常才行呢?
關於這個拋出有什麼具體的解釋來說明必要性嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.3.117.14 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1644033956.A.D05.html
1F:推 lycantrope: RuntimeException(unchekced) vs Checked Exception 02/05 13:00
2F:→ ssccg: throw Exception和(method) throws Exception意思不一樣 02/05 16:48
3F:→ ssccg: 前者才是拋出例外,後者是標示說(方法)「可能會」拋出例外 02/05 16:48
4F:→ ssccg: 當你用到一個標示為throws IOException的方法,要不就是完 02/05 16:49
5F:→ ssccg: 全不處理,那整段程式碼包含IO方法就是「可能會」拋出例外 02/05 16:50
6F:→ ssccg: 所以要在你的方法也標示throws IOException 02/05 16:50
7F:→ ssccg: 否則就是要寫try-catch,一旦真的有例外被拋出,你程式會把 02/05 16:52
8F:→ ssccg: 它接住處理掉不再往上層拋,你的整段程式碼不可能會拋出該 02/05 16:52
9F:→ ssccg: 例外,那自然就不用標示 02/05 16:54
10F:→ ssccg: 另外你可能還誤會一點,當選擇不處理,標throws Exception 02/05 16:55
11F:→ ssccg: 一旦例外發生,你的程式也會中斷在IO方法那行,並不會正常 02/05 16:56
12F:→ ssccg: 運行繞過錯誤,而是真的出錯了 02/05 16:57
13F:→ ssccg: 一樓說的RuntimeException是compiler不會強制要求你要標示 02/05 16:58
14F:→ ssccg: throws ,但例外的運行機制還是一樣如上 02/05 16:59
15F:→ JustinHere: 參考〈犯錯並不可恥〉的部份: 02/16 20:32