[問題] 為何輸出輸入需要拋出IOException異常?

看板java作者 (虎紋蜜瓜)時間9月前 (), 編輯推噓1(1015)
留言16則, 3人參與, 9月前最新討論串1/1
想請問各位 為何在進行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

02/05 13:00, 9月前 , 1F
RuntimeException(unchekced) vs Checked Exception
02/05 13:00, 1F

02/05 16:48, 9月前 , 2F
throw Exception和(method) throws Exception意思不一樣
02/05 16:48, 2F

02/05 16:48, 9月前 , 3F
前者才是拋出例外,後者是標示說(方法)「可能會」拋出例外
02/05 16:48, 3F

02/05 16:49, 9月前 , 4F
當你用到一個標示為throws IOException的方法,要不就是完
02/05 16:49, 4F

02/05 16:50, 9月前 , 5F
全不處理,那整段程式碼包含IO方法就是「可能會」拋出例外
02/05 16:50, 5F

02/05 16:50, 9月前 , 6F
所以要在你的方法也標示throws IOException
02/05 16:50, 6F

02/05 16:52, 9月前 , 7F
否則就是要寫try-catch,一旦真的有例外被拋出,你程式會把
02/05 16:52, 7F

02/05 16:52, 9月前 , 8F
它接住處理掉不再往上層拋,你的整段程式碼不可能會拋出該
02/05 16:52, 8F

02/05 16:54, 9月前 , 9F
例外,那自然就不用標示
02/05 16:54, 9F

02/05 16:55, 9月前 , 10F
另外你可能還誤會一點,當選擇不處理,標throws Exception
02/05 16:55, 10F

02/05 16:56, 9月前 , 11F
一旦例外發生,你的程式也會中斷在IO方法那行,並不會正常
02/05 16:56, 11F

02/05 16:57, 9月前 , 12F
運行繞過錯誤,而是真的出錯了
02/05 16:57, 12F

02/05 16:58, 9月前 , 13F
一樓說的RuntimeException是compiler不會強制要求你要標示
02/05 16:58, 13F

02/05 16:59, 9月前 , 14F
throws ,但例外的運行機制還是一樣如上
02/05 16:59, 14F

02/16 20:32, 9月前 , 15F
參考〈犯錯並不可恥〉的部份:
02/16 20:32, 15F

02/16 20:33, 9月前 , 16F
文章代碼(AID): #1X_VUaq5 (java)
文章代碼(AID): #1X_VUaq5 (java)