看完这块代码,我久久不能平静

2021-04-08 16:26:31 +08:00
 ignore

try { .... if(url == null) { throw new NullPointerException(); } .... } catch (IOException e) { e.fillInStackTrace(); }

12017 次点击
所在节点    程序员
64 条回复
AoEiuV020
2021-04-08 18:07:34 +08:00
没毛病,很可能是等后面自动抛 npe 就晚了,抛异常前已经执行的语句又不能回滚的,
kincaider
2021-04-08 18:12:30 +08:00
还不平静吗?
mengkun
2021-04-08 18:14:34 +08:00
Kasumi20
2021-04-08 18:45:54 +08:00
保护代码在正常条件下执行而已,难道你从来不检查参数的吗
iseki
2021-04-08 18:48:04 +08:00
我觉得很多时候这是正确的编码方式,Java 里毕竟没有 checkNotNull
Leviathann
2021-04-08 18:50:52 +08:00
这个就是 guava 的 precondition.checknotnull 吧
bigbyto
2021-04-08 18:51:14 +08:00
不是十分的优雅,不过没觉得有太大的问题。
shm7
2021-04-08 19:28:13 +08:00
不晓得🤷‍♂️ 也许是为了把这种业务错误在这个代码块捕捉完也说不定
TheWidowMaker
2021-04-08 19:38:44 +08:00
@guyeu 抛 npe 就很奇怪了吧?
raaaaaar
2021-04-08 19:52:21 +08:00
@mengkun #23 emmmm
Jaeden
2021-04-08 19:55:26 +08:00
throw NullPointerException,catch IOException
LGA1150
2021-04-08 20:08:34 +08:00
@iseki #25
Objects.requireNonNull
iseki
2021-04-08 20:13:33 +08:00
@LGA1150 thx
Blessing1
2021-04-08 20:17:17 +08:00
平常心对待!!!
Still4
2021-04-08 20:23:15 +08:00
代码不全,估摸着 url 来自于其他地方,抛出错误是合理的,抛出 NPE 不合理
gamexg
2021-04-08 20:36:22 +08:00
非 java 开发
如果函数参数不允许 null,那么我会在函数开头直接检查
如果为参数 null,立刻报错并结束函数,防止程序执行一半后碰到空指针错误还要回滚操作。
另外代码也能够清晰的表明,函数不允许 null 参数。

不过一般是返回自定义错误,而不是返回 空指针异常
hhjswf
2021-04-08 22:25:19 +08:00
俺寻思着,NPE 还用你抛啊
cgb1021
2021-04-08 22:50:24 +08:00
是为了把所有错误都放在 catch 里处理
wutiantong
2021-04-08 22:58:45 +08:00
搞不懂你们写 java 的点呢[狗头]
sutra
2021-04-09 08:42:27 +08:00
打开 V2EX 我久久不能平静。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769094

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX