मैं स्कैला, प्ले फ्रेमवर्क 2.1.x, और reactivemongo ड्राइवर का उपयोग कर रहा हूं।भविष्य की पुनर्प्राप्ति अपवाद क्यों नहीं लेती?
मैं एक API कॉल है:
def getStuff(userId: String) = Action(implicit request => {
Async {
UserDao().getStuffOf(userId = userId).toList() map {
stuffLst => Ok(stuffLst)
}
}
})
यह समय के ठीक 99% काम करता है लेकिन कभी-कभी विफल हो सकता है (कोई फर्क नहीं पड़ता क्यों, कि मुद्दा नहीं है)।
मैं तो मैं जोड़ा एक त्रुटि के एक मामले में ठीक करने के लिए चाहता था:
recover { case _ => BadRequest("")}
लेकिन यह त्रुटियों से मुझे ठीक नहीं है।
मैं स्केला कंसोल पर इसी अवधारणा की कोशिश की और यह काम किया:
import scala.concurrent._
import scala.concurrent.duration._
import ExecutionContext.Implicits.global
var f = future { throw new Exception("") } map {_ => 2} recover { case _ => 1}
Await.result(f, 1 nanos)
यह रिटर्न 1 अपेक्षा के अनुरूप।
मैं वर्तमान के साथ Async लिपटे:
try{
Async {...}
} catch {
case _ => BadRequest("")
}
और यह त्रुटियों फैल जाती है।
मैं नेट पर कुछ स्कैला के भविष्य के दस्तावेज़ों पर गया और मुझे परेशान है कि क्यों मेरे लिए ठीक नहीं हुआ।
क्या किसी को पता है क्यों? इसे हल करने के लिए मुझे क्या याद आती है?
वास्तव में एक "विफल भविष्य" क्या है? – ps0604
@ ps0604: 'भविष्य.फेल (<अपवाद जिसे आपने पकड़ा>> ' –