Java の stream は RuntimeException しか投げられない
2025-02-14


Java に stream が導入されて、ループに変わって stream で順次処理するのをよく目にする様になった。イテレータやループ等のようにブロックを書くのではなく、関数を連結するコードなのでスッキリした見た目。

stream は面白いが、2つの欠点がある。

1つ目は普通の Exception を投げられない事。stream 内で Exception を投げる関数を呼ぶ時にはラムダ関数を使って catch しなければいけないので、せっかくスッキリしたコードが分厚くなる。こちらは、結構大きい問題。RuntimeException ばっかり投げるコードだと、どこでどの様な問題が起きるか、例外処理がされているかが分かりづらいので、個人的には RuntimeException は投げたくない。そうなると、必然的に stream が使いづらくなっていく。

2つ目は複雑な削除が難しい事。処理している最中の要素だけだったら filter 等で簡単に落とせるし、iterator や for-each ループでも簡単。しかし、前後の要素等にも参照してする様な複雑な削除は iterator になる。こちらは滅多にやら無い処理なので、

[java]
[Programming]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット