Stream에서 IO Exception을 던지고 싶으세요?그렇다면


Vavr의 Try 또는 Either를 사용합니다.

이런 일 없어요?



흐름에서 값을 처리하고 중간 λ 표현식에서 이상 검사를 처리해야 합니다
주: BookReader 외부에 있기 때문에 바꾸기 어렵다고 생각하세요

일반적인 처리



런타임 오류를 RuntimeError로 변경한 경우
방법 내와private 범위 내에서 오류를 잘 처리하는 것은 좋지만,public의 세계에서 예외를 제외하는 것은 이미 매우 고생스럽다.
또 지금은 그런 일이 없어도 쉽게 그런 일을 할 수 있다는 점이 불안하다.

억지로 Stream을 안 쓰면 되잖아요.



맞습니다.나는 런타임 에러가 던지는 것보다 낫다고 생각한다.
로컬 변수는 0개에서 2개로 증가했고 인코딩량은 2배를 넘었고 플러그인은 2개 단계를 심화시켰다. 팀 전체가 만족한다면 별론이다.

본론


예를 들어 Golang은 메타그룹 (여러 개의 실례 그룹) 을 사용하여 이상 시스템의 결과를 호출자에게 전파하지만 Java는 언어 규범 단계에서 메타그룹을 지원하지 않습니다.
클래스를 만들면 대체할 수 있지만 함수형 프로그래밍에 대해서는 Scala와 Haskell을 참고하면 더 좋은 생각이 있을 것입니다.
Vavr는 Java에서 함수형 프로그래밍을 쉽게 할 수 있는 라이브러리입니다.

Either

Right 또는 Left 모든 값의 클래스입니다.보통 정상계Right, 이상계Left.다자렛Optional의 강화판의 인상이 좋았으면 좋겠어요.Optional 에서는 null 인지 여부의 정보만 흐름의 하류로 흐르지만, Either 값을 흐름의 하류로 흐르게 할 수 있습니다. 예를 들어 예외입니다.

Try


이름은try-catch를 함수형으로 쓰는 클래스입니다.
이상을 검사할 수 있는 λ 표현식을 받아들여 이상이 발생했을 때의 처리를 λ 형식으로 표시할 수 있다.
이것도 Either 역시 정상값, 이상값 중 하나Optional를 포함하고 있다고 생각하십시오.
분위기만 보면 Try가 선택이라고 생각하지만 Try에서 이상계 처리된 입력이 Throwable로 바뀌어 베팅이 발생하기 쉬우므로 Either로 쓰면 모호하지 않은 경우도 있다.

써봐요.


예를 들면 이런 느낌일 것 같아.
Either:

Try:

이 점을 유의하십시오.만약 정확하게 처리한다면 다음 방송이 필요하다.

겸사겸사 말씀드리다


Vavr를 처음 사용하면 자바를 볼 수 없어서 유지하기가 어려워요. 왜 Scala와 Haskell을 사용하지 않나요?

기타 솔루션


자바를 무리하지 않고 계속 사용해도 되나요?그렇게 지도 모른다, 아마, 아마...

잡감


OSS 이야기인데...
https://github.com/vavr-io/vavr  

좋은 웹페이지 즐겨찾기