推 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