作者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/cn.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