Cách nào là sạch nhất để map
số Exception
của một thất bại Future
trong scala?Bản đồ Ngoại lệ của một Thất bại tương lai
Nói rằng tôi có:
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
val f = Future {
if(math.random < 0.5) 1 else throw new Exception("Oh no")
}
Nếu tương lai thành công với 1
, tôi muốn giữ điều đó, tuy nhiên nếu nó không thành công Tôi muốn thay đổi Exception
đến một khác nhau Exception
.
Điều tốt nhất tôi có thể đưa ra được biến đổi, tuy nhiên đòi hỏi tôi phải làm một chức năng không cần thiết đối với trường hợp thành công:
val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
Có bất kỳ lý do không có mapFailure(PartialFunction[Throwable,Throwable])
?
biến đổi là đúng cách để đi. bạn không cần tạo hàm s => s, chỉ cần chuyển vào '' identity'' –
Chúc mừng. Tôi không biết về hàm 'identity'. Tôi chắc chắn sẽ có nhiều thời gian hơn trong đó sẽ có ích. – theon