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