일부 스카치 스트림 문서의 예제를 살펴 보겠습니다. scalaz-streams의 태스크에서 예외 로깅 및 무시
import scalaz.stream._
import scalaz.concurrent.Task
val converter: Task[Unit] =
io.linesR("testdata/fahrenheit.txt")
.filter(s => !s.trim.isEmpty && !s.startsWith("//"))
.map(line => fahrenheitToCelsius(line.toDouble).toString)
.intersperse("\n")
.pipe(text.utf8Encode)
.to(io.fileChunkW("testdata/celsius.txt"))
.run
// at the end of the universe...
val u: Unit = converter.run
이 경우 파일이 잘 일부 비 이중 문자열을 포함 할 수 있습니다, 그리고
fahrenheitToCelsius
어떤
NumberFormatException
발생합니다. 이 경우에이 오류를 기록하고 이후의 스트림 처리를 위해이 오류를 무시하려고한다고 가정 해 봅시다. 그것을하는 관용적 인 방법은 무엇입니까? 몇 가지 예를 살펴 보았지만 일반적으로 스트림은
collectFrom
입니다.
을하지 단계를 반복합니다. scalaz 함께 할 수 있지만, 실패한 매핑 및 경우에'Try'을 사용하여 오류를 방법을 기록 할 수 있습니다 당신은 (아마 이런 식으로 : https://github.com/scalaz/scalaz-stream/blob/master/src/test/scala/scalaz/stream/examples/WritingAndLogging.scala#L63). –