![]() | 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 ![]() 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 附言格式乱了,还是截图好看些 ![]() |