1
theTd 2019 年 5 月 22 日
用 Callable 的话是可以吃掉受检性异常的吧?
|
2
xiaoidea 2019 年 5 月 22 日
|
3
airfling 2019 年 5 月 22 日 via Android
你至少要把那三个出现可能异常的的点解决掉,不太建议代码都写在这一块。每个方法的代码尽量不超过 10 行
|
4
mritd 2019 年 5 月 22 日
如果线上这一串出现了空指针啥的...
|
7
mooncakejs 2019 年 5 月 22 日 io 相关感觉不太适合 stream,CompletableFuture 感觉更适合
|
8
xinyewdz 2019 年 5 月 22 日
这代码,看的人也是头大。
|
9
BBCCBB 2019 年 5 月 22 日
封装成一个方法,然后流里调该方法也许可破.
|
10
BBCCBB 2019 年 5 月 22 日
或者将相应的 Function, Consumer 放到外面声明
|
11
chocotan 2019 年 5 月 22 日
可以试下下 Try
javaslang 里的 |
12
passerbytiny 2019 年 5 月 22 日
这是受检异常造成的,跟 Stream 有什么关系。而且你这个流干的东西也太多了吧,都要跨系统调用来获取数据了,这应该是高级流干的事,不应该是 API 级别的低级流干得事。
|
13
BCy66drFCvk1Ou87 2019 年 5 月 22 日
java 8 的新特性 lambda 也是搞得我懵逼,一堆箭头函数跟写 es6 一样……
|
14
jinhan13789991 2019 年 5 月 22 日 via Android
要不~试试 rxjava ? 对异常处理友好~
|
15
Sharuru 2019 年 5 月 22 日
流略长……不要把以前的宽度问题转换成高度问题啊- -
|
16
x66 2019 年 5 月 22 日
最怕的难道不是写了一大串,突然线上出一个空指针,根本找不到是哪一行的问题,那感觉简直绝望。
|
17
yuankui OP 不要吐槽太长嘛,我就算是短成俩行,他遇到异常,还是得咯噔一下
|
18
syhan 2019 年 5 月 22 日
Try+1
|
19
reeco 2019 年 5 月 22 日
用 JOOL 处理 checked exception
https://github.com/jOOQ/jOOL before: ``` Arrays.stream(dir.listFiles()).forEach(file -> { try { System.out.println(file.getCanonicalPath()); } catch (IOException e) { throw new RuntimeException(e); } // Ouch, my fingers hurt! All this typing! }); ``` after: ``` Arrays.stream(dir.listFiles()).forEach( Unchecked.consumer(file -> { System.out.println(file.getCanonicalPath()); }) ); ``` |
21
guyeu 2019 年 5 月 22 日
代码组织有问题,流并不是所有地方都适用的。
|
22
art2cat 2019 年 5 月 22 日
effective java 里说不要超过三行,楼主这是入了魔啊
|
24
yuankui OP @passerbytiny 当然跟流有关系。
`Stream.map(Function func)` 拿 map 来说,map 方法签名中的 Function.apply 签名没有 throws Exception,所以就要求 function 实现必须把异常 catch 住。 |
25
SoloCompany 2019 年 5 月 22 日
java 自己给自己埋坑导致的, 语言层面的 checked exception 和 fp 就天然水土不服
虽然这个坑完全是编译器造成的, 但为了兼容不得不一直坑下去 fp 还是用 kotilin 吧 |
26
ppaapc 2019 年 5 月 22 日
优化下格式 好好分割下还可以 stream 写着处理异常确实感觉有点蛋疼
|
27
qiyuey 2019 年 5 月 23 日 via Android
没办法,上 Kotlin 吧
|
28
encounter2017 2019 年 5 月 23 日
来学 scala 啊
|
29
yuankui OP 附言格式乱了,还是截图好看些
|