Başarısız bir gelecek oluşturmak için Future.failed yapıcısını kullanıyorum, ancak başarısız bir gelecek hala olmaması gerektiğinde istisna atar.Scala Future.failed, kendisine gönderilen istisnayı atar
session.loadAll yöntemi bir istisna atar.
Başarısız bir gelecek oluşturmak için Future.failed yapıcısını kullanıyorum, ancak başarısız bir gelecek hala olmaması gerektiğinde istisna atar.Scala Future.failed, kendisine gönderilen istisnayı atar
session.loadAll yöntemi bir istisna atar.
Ben Future.failed
durum atma olmadığını düşünüyorum. Görünüşe göre, yığın izlemesi özel durumun oluştuğu yerde oluşturulur.
Yani, Await.result
gibi bir yöntem, ya da gelecek başarılı olduğunu varsayar başka bir yöntemi kullanırsanız atılan yeniden, sen istisna göreceksiniz, ancak atılmış sanki yığın izleme o bakmak yapacak Future.failed
.
'Await.result' genellikle engellenen bir çağrı olduğu için önerilmez. Engelleme gerekli değilse, "Future.onComplete" veya "Future.onFailure", eşzamansız kalıbı takip edecek ve daha iyi performans gösterecektir. http://docs.scala-lang.org/overviews/core/futures.html bunun neden bu kötü bir fikir olduğunu açıklıyor – pgoggijr
@pgoggijr Evet, bu iyi bir nokta. – Owen
İlk bir try-catch bloğu kullanarak olur
, sana kullandığınız Tam olarak emin değilim Çal Framework kullanıyorum Gelecek, çünkü bunlar asenkron çağrılara benzemiyor.
Sorunuzu yanıtlamak için, burada neler olup bittiğinden emin değilim, ancak istisnayı ele almanız gerekiyor gibi görünüyor. Geleceğin tüketicisi Future.onComplete
ve desen eşleşmesi bir Hata türünü veya Future.onFailure
'u ve Throwable türlerinde desen eşlemesini kullanmalıdır. Geleceği
Scala docs: http://docs.scala-lang.org/overviews/core/futures.html
Sorun şu ki tüketici ile sorun değil, istisnai durumla ilgilenmiyordu – vicaba
Ne sorduğunuzu kesinlikle bilmiyorum. 'LoadAll' yöntemi bir istisna atar, tamam, desen eşleştirmeniz onu yakalar, tamam, sonra başka bir 'Future.failed 'yeni bir' Exception '(Tamam) kaydırma tamam. Sorun ne? Ayrıca, ekran görüntüleri ile ne var? – slouc
@slouc Amacım söylediğiniz gibi bir istisna sarma geleceğe dönmektir, sorun geleceği geri döndürmek yerine istisna atılır. Görüntüler ile göstermeye çalıştığım şey bu. Hiçbir istisna atılmadığından uygulama çökmemelidir (ya da en azından istisnai bir geleceği sarmakla istediğim bu) – vicaba
Oh, anladım. Ancak 'Future.failed (yeni İstisna()) 'kısmı kesinlikle istisnayı fırlatan değil. Başka bir şey var. Belki de 'getThings' sonucunu tüketen kısım başarısız bir gelecek beklemiyor (bu durumda derleyicinin neden bu durumda 44. satırdaki istisnayı gösterdiğinden emin değilim). Ekran görüntüsü yorumum, resim değil, her zaman kod snippet'leri göndermeniz gerektiğini söylüyordu. – slouc