I이 사용하는이 기능 Play WS services : 스칼라 - 재생 : 잘 처리하는 방법 WS 얻을 예외
case class Url(id: Long, url: String)
내가 내 응용 프로그램을 원하는 :
Url
그렇게 정의 된 경우 클래스입니다
def executeRequest(urls: List[Url]): List[Future[String]] =
urls.map(url => {
WS.url(url.url).get().map(x => url.url + ": " + x.statusText)
})
탄력적이어야하며 때로는 url
값은 URL이 잘 형성되지 않은 경우 IllegalArgumentException
을 트리거합니다. 예외가 향후 실행 내부의 .get()
내부에 발생하고 있지 않기 때문에
def executeRequest2(urls: List[Url]): List[Future[String]] =
urls.map(url => {
WS.url(url.url).get().map(x => url.url + ": " + x.statusText)
.recover({
case e: IllegalArgumentException => url.url + " is invalid"
})
})
이 (어쨌든 그냥 추측) 대부분의 아마 작동하지 않습니다 내가 노력하면이이었다.
def executeRequest(urls: List[Url]): List[Future[String]] =
urls.map(url => {
try {
WS.url(url.url).get().map(x => x.statusText)
}
catch {
case e: IllegalArgumentException => future {
url.url + " is illegal."
}
}
})
이 작동하지만, 나는이 예외를 처리 할 수있는 몇 가지 더 좋은 더 관용적 인 방법을 싶습니다
는 내가하고 결국은 이것이다. 여기에 나는이 코드 조각을 더 읽기 어렵게 만드는 미래의 실행에서 궁극적 인 문제를 처리하기 위해 recover
을 추가하지 않았습니다.
아주 좋은, 감사합니다. –