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